source: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/Shark3D/bin/res/client/actor/client.s3d_actor_run @ 2517

Revision 2517, 21.2 KB checked in by igarcia, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14// Definition of the game client.
15// This file defines all actors used on client side.
16// It includes the graphic output definitions "client/actor/gfx.s3d_actor_run"
17// and the display defintion "client/actor/display.s3d_actor_run".
18
19// The client root actor is a capsule, defining an own local namespace.
20actor_ident "kit_base.capsule"
21actor_param
22{
23    // Delegate the action calls to all children:
24    active 1
25    // Scope name. Used in error messages.
26    scope "client"
27    // Name of the capsule actor within its own namespace.
28    // Actors within the capsule can access the capsule
29    // actor itself by this name.
30    local_name "capsule"
31    // Delegate commands from outside to the correct dispatcher.
32    deleg_target "dispatch_export"
33    // The capsule actor contains a group of actors:
34    child_ident "kit_base.group"
35    child_param
36    {
37        // Delegate action calls to the children.
38        active 1
39        child_array
40        {
41            // Dispatcher for commands from outside the client capsule.
42            ident "kit_base.dispatch"
43            param
44            {
45                name "dispatch_export"
46                entry_array
47            }
48        }
49        {
50            // Central command dispatch actor.
51            // This dispatcher is used internally within the client.
52            ident "kit_base.dispatch"
53            param
54            {
55                name "dispatch"
56                entry_array
57                {
58                    cmds "set_camera_transf"
59                    targets "io"
60                }
61                {
62                    cmds "io_reloaded"
63                    targets "universeplayer_refresh_charge"
64                    newcmd "perform"
65                }
66            }
67        }
68        {
69            // This dispatcher is used to filter input commands.
70            ident "kit_base.dispatch"
71            param
72            {
73                name "dispatch_input"
74                entry_array
75                {
76                    cmds "quit" "refresh_all_res"
77                    targets "^root"
78                }
79                {
80                    cmds "store_file_default"
81                    targets "store_file_default"
82                    newcmd "perform"
83                }
84                {
85                    cmds "load_file_default"
86                    targets "load_file_default"
87                    newcmd "perform"
88                }
89                {
90                    // Send these commands to server:
91                    cmds
92                        "fire" "directfire" "god" "special"
93                        "goto_level0" "goto_level1"
94                        "goto_level2" "goto_level3"
95                        "goto_level4" "goto_level5"
96                        "goto_level6" "goto_level7"
97                        "goto_level8" "goto_level9"
98                        "goto_level10" "goto_level11"
99                        "goto_level12" "goto_level13"
100                        "goto_level14" "goto_level15"
101                        "goto_level16" "goto_level17"
102                        "goto_level18" "goto_level19"
103                        "goto_level20" "goto_level21"
104                        "goto_level_next" "goto_level_prev"
105                    // Delegate to the universe-player:
106                    targets "universeplayer"
107                }
108                {
109                    // Send movement commands to the movement control actor:
110                    cmds
111                        "apply_move_pos_x" "apply_move_neg_x"
112                        "apply_move_pos_y" "apply_move_neg_y"
113                        "apply_move_pos_z" "apply_move_neg_z"
114                        "assign_vel_pos_x" "assign_vel_neg_x"
115                        "assign_vel_pos_y" "assign_vel_neg_y"
116                        "assign_vel_pos_z" "assign_vel_neg_z"
117                        "switch_vel_pos_x" "switch_vel_neg_x"
118                        "switch_vel_pos_y" "switch_vel_neg_y"
119                        "switch_vel_pos_z" "switch_vel_neg_z"
120                        "apply_rot_pos_x" "apply_rot_neg_x"
121                        "apply_rot_pos_y" "apply_rot_neg_y"
122                        "apply_rot_pos_z" "apply_rot_neg_z"
123                        "assign_spin_pos_x" "assign_spin_neg_x"
124                        "assign_spin_pos_y" "assign_spin_neg_y"
125                        "assign_spin_pos_z" "assign_spin_neg_z"
126                        "switch_spin_pos_x" "switch_spin_neg_x"
127                        "switch_spin_pos_y" "switch_spin_neg_y"
128                        "switch_spin_pos_z" "switch_spin_neg_z"
129                        "jump"
130                    targets "motion"
131                }
132                {
133                    // Commands for gfx:
134                    cmds "set_cursor_x" "set_cursor_y"
135                        "move_cursor_x" "move_cursor_y"
136                        "toggle_showgfxbound"
137                        "toggle_showgfxmesh"
138                        "toggle_showgfxwire"
139                        "toggle_showgfxocclmesh"
140                        "toggle_showgfxocclwire"
141                        "toggle_showphysbound"
142                        "toggle_showphysgeo"
143                        "toggle_showphyscontact"
144                        "toggle_shownoise"
145                        "toggle_showsensorbound"
146                        "toggle_showsensorgeo"
147                        "store_screenshot"
148                        "reset_msg"
149                        "toggle_frmtime"
150                        "toggle_stat" "reset_stat"
151                        "toggle_fullscreen"
152                        "toggle_catch_mouse"
153                    targets "io"
154                }
155                {
156                    cmds "reload_io"
157                    targets "io_extern"
158                    newcmd "load_current"
159                }
160                {
161                    // Character input
162                    cmds "handle_char"
163                    targets
164                }
165            }
166        }
167        {
168            // Dispatcher of commands coming from the server.
169            ident "kit_base.dispatch"
170            param
171            {
172                name "dispatch_universe"
173                entry_array
174                {
175                    cmds "get_basesuppl"
176                    targets "sersuppl"
177                    newcmd "get_obj"
178                }
179                {
180                    cmds "ignore_frmtime"
181                    targets "^root"
182                }
183                {
184                    cmds "cfg_access_int_info"
185                    targets "^cfg"
186                    newcmd "access_int_info"
187                }
188                {
189                    cmds "cfg_access_float_info"
190                    targets "^cfg"
191                    newcmd "access_float_info"
192                }
193                {
194                    cmds "cfg_access_str_info"
195                    targets "^cfg"
196                    newcmd "access_str_info"
197                }
198                {
199                    cmds "cfg_access_chunk_info"
200                    targets "^cfg"
201                    newcmd "access_chunk_info"
202                }
203                {
204                    cmds "universe_cfg_access_int_info"
205                    targets "universe_cfg"
206                    newcmd "access_int_info"
207                }
208                {
209                    cmds "universe_cfg_access_float_info"
210                    targets "universe_cfg"
211                    newcmd "access_float_info"
212                }
213                {
214                    cmds "universe_cfg_access_str_info"
215                    targets "universe_cfg"
216                    newcmd "access_str_info"
217                }
218                {
219                    cmds "universe_cfg_access_chunk_info"
220                    targets "universe_cfg"
221                    newcmd "access_chunk_info"
222                }
223                {
224                    cmds "enable_notice_destroying" "disable_notice_destroying"
225                        "enable_notice_loading" "disable_notice_loading"
226                        "enable_notice_saving" "disable_notice_saving"
227                    targets
228                }
229            }
230        }
231        {
232            ident "kit_perch.mgr"
233            param
234            {
235                name "perchmgr"
236            }
237        }
238        {
239            ident "kit_snk.data"
240            param
241            {
242                name "universe_cfg"
243                val
244                {
245                    server 0
246                }
247            }
248        }
249        {
250            ident "kit_base.sersuppl"
251            param
252            {
253                name "sersuppl"
254                child "^basesuppl"
255            }
256        }
257        {
258            // Dispatcher of commands coming from the server.
259            ident "kit_base.dispatch"
260            param
261            {
262                name "dispatch_inform"
263                entry_array
264                {
265                    cmds "set_state_world"
266                    targets "state_world"
267                    newcmd "set_obj"
268                }
269                {
270                    cmds "set_state_sky"
271                    targets "state_sky"
272                    newcmd "set_obj"
273                }
274                {
275                    cmds
276                        "set_gfxmgr_level"
277                        "set_sndmgr_level"
278                        "set_state_world"
279                        "set_state_sky"
280                        "set_sim_world"
281                        "set_noise_world"
282                        "set_sensorstate_world"
283                    targets "io"
284                }
285                {
286                    cmds "set_sim_world"
287                    targets "sim_world"
288                    newcmd "set_obj"
289                }
290                {
291                    cmds "set_noise_world"
292                    targets "noise_world"
293                    newcmd "set_obj"
294                }
295                {
296                    cmds "set_sensorstate_world"
297                    targets "sensorstate_world"
298                    newcmd "set_obj"
299                }
300                {
301                    cmds "set_camera"
302                    targets "elem_camera"
303                    newcmd "set_obj"
304                }
305                {
306                    cmds "set_playerbody"
307                    targets "io"
308                }
309                {
310                    cmds "notice_level_load_pre"
311                    targets "display"
312                    newcmd "enable_notice_loading"
313                }
314                {
315                    cmds "notice_level_load_post"
316                    targets "display"
317                    newcmd "disable_notice_loading"
318                }
319                {
320                    cmds
321                        "notice_level_load_pre"
322                        "notice_level_load_post"
323                    targets "io"
324                    newcmd "suspend_output"
325                }
326                {
327                    cmds
328                        "notice_level_load_pre"
329                        "notice_level_load_post"
330                    targets "io"
331                    newcmd "perform_output"
332                }
333            }
334        }
335        {
336            // Event queue.
337            ident "kit_base.evtmgr"
338            param
339            {
340                name "evtmgr"
341                active 1
342                extcfg_actor "^cfg"
343                extcfg_entry_log "log.evtmgr"
344            }
345        }
346        {
347            // Information line collection actor.
348            // This actor collects per-frame information lines
349            // like the frmtime.
350            // This actor does not generate the information,
351            // but only is responsible for collecting the lines.
352            ident "kit_base.inspcollect"
353            param
354            {
355                name "inspcollect"
356            }
357        }
358        {
359            ident "kit_engbase.extern"
360            param
361            {
362                name "universe_extern"
363                deleg_name "universe"
364                allow_no_target 1
365                res ""
366                active 1
367                net_imprint 0
368            }
369        }
370        {
371            ident "kit_engbase.plug"
372            param
373            {
374                name "plug"
375                deleg_name "plug_root"
376                netlink_suppl "^envcompsuppl"
377                netlink_ident "eng_base.netlink"
378                netlink_param
379                {
380                    env "^env"
381                }
382                netroot_target "universe"
383                lost_target ""
384                lost_cmd ""
385                nettraverse_target "universe_extern"
386                nettraverse_cmd "traverse"
387            }
388        }
389        {
390            // Create a network engine.
391            ident "kit_io.neteng"
392            param
393            {
394                name "neteng"
395                active 1
396                // Get parameters from the actor "cfg",
397                // which is defined above.
398                extcfg_actor "^cfg"
399                // Get the parameters from the "network" entry.
400                extcfg_entry_param "network"
401                given_array
402                {
403                    item "^env"
404                    given_ident "env"
405                }               
406            }
407        }
408        {
409            ident "kit_engbase.plugconnect"
410            param
411            {
412                name "plugconnect"
413                plug "plug"
414                neteng "neteng"
415                localroot "^server"
416                extcfg_actor "^cfg"
417                extcfg_entry_addr "client.addr"
418            }
419        }
420        {
421            ident "kit_engobj.informmgr"
422            param
423            {
424                name "universeplayer_informmgr"
425                deleg_name "universeplayer"
426                inform "dispatch_inform"
427                ignore_no_charge 1
428                notify_target ""
429                notify_pre_cmd ""
430                notify_post_cmd ""
431                produce_target "plug_root"
432                produce_cmd "produce_player"
433            }
434        }
435        {
436            ident "kit_base.paramvoid"
437            param
438            {
439                name "universeplayer_refresh_charge"
440                target "universeplayer_informmgr"
441                cmd "refresh_charge"
442            }
443        }
444        {
445            ident "kit_engobj.fetch"
446            param
447            {
448                name "universeplayer_fetch"
449                query_target "universeplayer_informmgr"
450                query_cmd "get_charge"
451                produce_target "universeplayer_informmgr"
452                produce_cmd "produce_charge"
453                produce_report_target ""
454                produce_report_cmd ""
455                enum_target ""
456                enum_cmd ""
457                enum_report_target ""
458                enum_report_cmd ""
459            }
460        }
461
462        {
463            ident "kit_engobj.itemeye"
464            param
465            {
466                name "sim_world"
467            }
468        }
469        {
470            ident "kit_engobj.itemeye"
471            param
472            {
473                name "noise_world"
474            }
475        }
476        {
477            ident "kit_engobj.itemeye"
478            param
479            {
480                name "sensorstate_world"
481            }
482        }
483        {
484            ident "kit_engobj.itemeye"
485            param
486            {
487                name "elem_camera"
488            }
489        }
490        {
491            // Define the camera:
492            ident "kit_engobj.cameractrl"
493            param
494            {
495                name "cameractrl"
496                active 1
497                rawtransf_src "elem_camera"
498                transf_target "dispatch"
499                transf_cmd "set_camera_transf"
500            }
501        }
502        {
503            // Include the definition of the display.
504            ident "kit_base.extern"
505            param
506            {
507                // Delegate action calls to the child:
508                name "display_extern"
509                deleg_name "display"
510                res "client/actor/display.s3d_actor_run"
511                // No watch because display needs "set_clientimageobj_xxx"
512                active 1
513            }
514        }
515        {
516            // Include actors for movement control:
517            ident "kit_base.extern"
518            param
519            {
520                // Delegate action calls to the child:
521                deleg_name "motion"
522                res "client/actor/motion.s3d_actor_run"
523                active 1
524            }
525        }
526        {
527            ident "kit_engobj.itemeye"
528            param
529            {
530                name "state_world"
531            }
532        }
533        {
534            ident "kit_engobj.itemeye"
535            param
536            {
537                name "state_sky"
538            }
539        }
540        {
541            ident "kit_engobj.itemeye"
542            param
543            {
544                name "state_display"
545            }
546        }
547        {
548            // Include the definition of the display.
549            ident "kit_base.extern"
550            param
551            {
552                // Delegate action calls to the child:
553                name "io_extern"
554                deleg_name "io"
555                res "client/actor/io.s3d_actor_run"
556                notify_target "dispatch"
557                notify_post_cmd "io_reloaded"
558                watch_target "io_extern"
559                watch_cmd "load_current"
560                active 1
561            }
562        }
563
564        // The following entry_array define the order of actions
565        // performed each frame in the client.
566        // General order:
567        //   1. Receive data from server.
568        //   2. Update output (especially timeconsuming 3D output).
569        //   3. Evaluate input.
570        //   4. Send data to server.
571        // Note that performing input before output would be the wrong order,
572        // since the input would not have been evaluated by the server yet-
573        // The above order archives that the display reflects the input
574        // as soon as possible.
575        {
576            ident "kit_base.onaction"
577            param
578            {
579                active 1
580                name "check_universeplayer_onaction"
581                target "universeplayer_fetch"
582                cmd "check_produce_charge"
583            }
584        }
585        {
586            // First, evaluate data received from server:
587            ident "kit_base.onaction"
588            param
589            {
590                active 1
591                name "poll_recv_onaction"
592                target "plug"
593                cmd "poll_recv"
594            }
595        }
596        {
597            // Update camera transformation to views and snd.
598            ident "kit_base.onaction"
599            param
600            {
601                active 1
602                name "update_cameractrl_onaction"
603                target "cameractrl"
604                cmd "update"
605            }
606        }
607        {
608            // Render the gfxports and update the sndports:
609            ident "kit_base.onaction"
610            param
611            {
612                active 1
613                name "perform_output_onaction"
614                target "io"
615                cmd "perform_output"
616            }
617        }
618        {
619            // Evaluate input data:
620            ident "kit_base.onaction"
621            param
622            {
623                active 1
624                name "perform_input_onaction"
625                target "io"
626                cmd "perform_input"
627            }
628        }
629        {
630            // Evaluate motin input control:
631            ident "kit_base.onaction"
632            param
633            {
634                active 1
635                name "update_motion_onaction"
636                target "motion"
637                cmd "update_motion"
638            }
639        }
640        {
641            // Send data to server:
642            ident "kit_base.onaction"
643            param
644            {
645                active 1
646                name "poll_send_onaction"
647                target "plug"
648                cmd "poll_send"
649            }
650        }
651        {
652            ident "kit_base.paramstr"
653            param
654            {
655                name "store_file_default"
656                target "universeplayer"
657                cmd "store_file"
658                param "save.sav"
659            }
660        }
661        {
662            ident "kit_base.paramstr"
663            param
664            {
665                name "load_file_default"
666                target "universeplayer"
667                cmd "load_file"
668                param "save.sav"
669            }
670        }
671    }
672}
Note: See TracBrowser for help on using the repository browser.