Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3238 in orxonox.OLD for orxonox/branches/buerli/src


Ignore:
Timestamp:
Dec 20, 2004, 2:42:54 AM (19 years ago)
Author:
bensch
Message:

orxonox/branches: updated branches: buerli, nico, sound. And moved bezierTrack to old.bezierTrack. Conflicts resolved in a usefull order.
Conflics mostly resolved in favor of trunk
merge.

Location:
orxonox/branches/buerli/src
Files:
48 edited
51 copied

Legend:

Unmodified
Added
Removed
  • orxonox/branches/buerli/src/Makefile.am

    r2617 r3238  
    1 AM_CXXFLAGS="-I/usr/X11R6/include"
    2 AM_LDFLAGS="-L/usr/Mesa-6.0.1/lib  -L/usr/X11R6/lib -lXt -lX11" $(MWINDOWS)
     1#AM_CXXFLAGS=""
     2AM_LDFLAGS= $(MWINDOWS)
    33
    44#"-O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include"
     
    66
    77bin_PROGRAMS=orxonox
    8 orxonox_SOURCES=orxonox.cc world.cc player.cc data_tank.cc world_entity.cc vector.cc camera.cc collision.cc command_node.cc ini_parser.cc keynames.cc track.cc base_entity.cc IPhys.cc
    98
    10 noinst_HEADERS=ability.h data_tank.h npc.h stdincl.h ai.h environment.h orxonox.h synchronisable.h base_entity.h error.h player.h track.h camera.h ini_parser.h power_up.h vector.h collision.h keynames.h proto_class.h world.h command_node.h list.h shoot_laser.h world_entity.h coordinates.h message_structures.h shoot_rocket.h IPhys.h
     9orxonox_SOURCES= orxonox.cc \
     10                 world.cc \
     11                 player.cc \
     12                 collision.cc \
     13                 data_tank.cc \
     14                 world_entity.cc \
     15                 vector.cc \
     16                 camera.cc \
     17                 command_node.cc \
     18                 ini_parser.cc \
     19                 keynames.cc \
     20                 track.cc \
     21                 base_entity.cc \
     22                 game_loader.cc \
     23                 campaign.cc \
     24                 story_entity.cc \
     25                 environment.cc \
     26                 importer/object.cc \
     27                 importer/array.cc \
     28                 importer/material.cc \
     29                 list.cc \
     30                 IPhys.cc
    1131
     32noinst_HEADERS = ability.h \
     33                 data_tank.h \
     34                 collision.h \
     35                 npc.h \
     36                 stdincl.h \
     37                 ai.h \
     38                 environment.h \
     39                 orxonox.h \
     40                 synchronisable.h \
     41                 base_entity.h \
     42                 error.h \
     43                 player.h \
     44                 track.h \
     45                 camera.h \
     46                 ini_parser.h \
     47                 power_up.h \
     48                 vector.h \
     49                 keynames.h \
     50                 proto_class.h \
     51                 world.h \
     52                 command_node.h \
     53                 list.h \
     54                 shoot_laser.h \
     55                 world_entity.h \
     56                 coordinates.h \
     57                 message_structures.h \
     58                 shoot_rocket.h \
     59                 list_template.h \
     60                 story_entity.h \
     61                 story_def.h \
     62                 game_loader.h \
     63                 campaign.h \
     64                 IPhys.h
    1265
    13 #  uncomment the following if bencoder requires the math library
     66## orxonox.conf will be used from home-dir instead.
     67EXTRA_DIST = orxonox.conf
     68
     69### GTK_RELATED
     70if HAVE_GTK2
     71  GTK_PROGS =console
     72else
     73  GTK_PROGS =
     74endif
     75
     76SUBDIRS = . \
     77          importer \
     78          gui \
     79          $(GTK_PROGS)
     80
     81#  uncomment the following if orxonox requires the math library
    1482#orxonox_LDADD=-lm
    1583
  • orxonox/branches/buerli/src/Makefile.in

    r2707 r3238  
    3838PRE_UNINSTALL = :
    3939POST_UNINSTALL = :
     40host_triplet = @host@
    4041bin_PROGRAMS = orxonox$(EXEEXT)
    4142subdir = src
     
    5354PROGRAMS = $(bin_PROGRAMS)
    5455am_orxonox_OBJECTS = orxonox.$(OBJEXT) world.$(OBJEXT) \
    55         player.$(OBJEXT) data_tank.$(OBJEXT) world_entity.$(OBJEXT) \
    56         vector.$(OBJEXT) camera.$(OBJEXT) collision.$(OBJEXT) \
     56        player.$(OBJEXT) collision.$(OBJEXT) data_tank.$(OBJEXT) \
     57        world_entity.$(OBJEXT) vector.$(OBJEXT) camera.$(OBJEXT) \
    5758        command_node.$(OBJEXT) ini_parser.$(OBJEXT) keynames.$(OBJEXT) \
    58         track.$(OBJEXT) base_entity.$(OBJEXT) IPhys.$(OBJEXT)
     59        track.$(OBJEXT) base_entity.$(OBJEXT) game_loader.$(OBJEXT) \
     60        campaign.$(OBJEXT) story_entity.$(OBJEXT) \
     61        environment.$(OBJEXT) object.$(OBJEXT) array.$(OBJEXT) \
     62        material.$(OBJEXT) list.$(OBJEXT) IPhys.$(OBJEXT)
    5963orxonox_OBJECTS = $(am_orxonox_OBJECTS)
    6064orxonox_LDADD = $(LDADD)
     
    6266depcomp = $(SHELL) $(top_srcdir)/depcomp
    6367am__depfiles_maybe = depfiles
    64 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/IPhys.Po \
     68@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/IPhys.Po ./$(DEPDIR)/array.Po \
    6569@AMDEP_TRUE@    ./$(DEPDIR)/base_entity.Po ./$(DEPDIR)/camera.Po \
    66 @AMDEP_TRUE@    ./$(DEPDIR)/collision.Po \
     70@AMDEP_TRUE@    ./$(DEPDIR)/campaign.Po ./$(DEPDIR)/collision.Po \
    6771@AMDEP_TRUE@    ./$(DEPDIR)/command_node.Po \
    68 @AMDEP_TRUE@    ./$(DEPDIR)/data_tank.Po ./$(DEPDIR)/ini_parser.Po \
    69 @AMDEP_TRUE@    ./$(DEPDIR)/keynames.Po ./$(DEPDIR)/orxonox.Po \
    70 @AMDEP_TRUE@    ./$(DEPDIR)/player.Po ./$(DEPDIR)/track.Po \
    71 @AMDEP_TRUE@    ./$(DEPDIR)/vector.Po ./$(DEPDIR)/world.Po \
    72 @AMDEP_TRUE@    ./$(DEPDIR)/world_entity.Po
     72@AMDEP_TRUE@    ./$(DEPDIR)/data_tank.Po \
     73@AMDEP_TRUE@    ./$(DEPDIR)/environment.Po \
     74@AMDEP_TRUE@    ./$(DEPDIR)/game_loader.Po \
     75@AMDEP_TRUE@    ./$(DEPDIR)/ini_parser.Po ./$(DEPDIR)/keynames.Po \
     76@AMDEP_TRUE@    ./$(DEPDIR)/list.Po ./$(DEPDIR)/material.Po \
     77@AMDEP_TRUE@    ./$(DEPDIR)/object.Po ./$(DEPDIR)/orxonox.Po \
     78@AMDEP_TRUE@    ./$(DEPDIR)/player.Po ./$(DEPDIR)/story_entity.Po \
     79@AMDEP_TRUE@    ./$(DEPDIR)/track.Po ./$(DEPDIR)/vector.Po \
     80@AMDEP_TRUE@    ./$(DEPDIR)/world.Po ./$(DEPDIR)/world_entity.Po
    7381CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    7482        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     
    7886SOURCES = $(orxonox_SOURCES)
    7987DIST_SOURCES = $(orxonox_SOURCES)
     88RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
     89        html-recursive info-recursive install-data-recursive \
     90        install-exec-recursive install-info-recursive \
     91        install-recursive installcheck-recursive installdirs-recursive \
     92        pdf-recursive ps-recursive uninstall-info-recursive \
     93        uninstall-recursive
    8094HEADERS = $(noinst_HEADERS)
    8195ETAGS = etags
    8296CTAGS = ctags
     97DIST_SUBDIRS = . importer gui console
    8398DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    8499ACLOCAL = @ACLOCAL@
     
    99114CXXFLAGS = @CXXFLAGS@
    100115CYGPATH_W = @CYGPATH_W@
     116DEBUG = @DEBUG@
    101117DEFS = @DEFS@
    102118DEPDIR = @DEPDIR@
     119DOXYGEN = @DOXYGEN@
     120DOXYGEN_FALSE = @DOXYGEN_FALSE@
     121DOXYGEN_TRUE = @DOXYGEN_TRUE@
    103122ECHO_C = @ECHO_C@
    104123ECHO_N = @ECHO_N@
     
    106125EGREP = @EGREP@
    107126EXEEXT = @EXEEXT@
     127GTK2_CFLAGS = @GTK2_CFLAGS@
     128GTK2_LIBS = @GTK2_LIBS@
     129HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
     130HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
    108131INSTALL_DATA = @INSTALL_DATA@
    109132INSTALL_PROGRAM = @INSTALL_PROGRAM@
     
    139162am__quote = @am__quote@
    140163bindir = @bindir@
     164build = @build@
    141165build_alias = @build_alias@
     166build_cpu = @build_cpu@
     167build_os = @build_os@
     168build_vendor = @build_vendor@
    142169datadir = @datadir@
    143170exec_prefix = @exec_prefix@
     171host = @host@
    144172host_alias = @host_alias@
     173host_cpu = @host_cpu@
     174host_os = @host_os@
     175host_vendor = @host_vendor@
    145176includedir = @includedir@
    146177infodir = @infodir@
     
    157188sharedstatedir = @sharedstatedir@
    158189sysconfdir = @sysconfdir@
     190target = @target@
    159191target_alias = @target_alias@
    160 AM_CXXFLAGS = "-I/usr/X11R6/include"
    161 AM_LDFLAGS = "-L/usr/Mesa-6.0.1/lib  -L/usr/X11R6/lib -lXt -lX11" $(MWINDOWS)
    162 orxonox_SOURCES = orxonox.cc world.cc player.cc data_tank.cc world_entity.cc vector.cc camera.cc collision.cc command_node.cc ini_parser.cc keynames.cc track.cc base_entity.cc IPhys.cc
    163 noinst_HEADERS = ability.h data_tank.h npc.h stdincl.h ai.h environment.h orxonox.h synchronisable.h base_entity.h error.h player.h track.h camera.h ini_parser.h power_up.h vector.h collision.h keynames.h proto_class.h world.h command_node.h list.h shoot_laser.h world_entity.h coordinates.h message_structures.h shoot_rocket.h IPhys.h
    164 all: all-am
     192target_cpu = @target_cpu@
     193target_os = @target_os@
     194target_vendor = @target_vendor@
     195
     196#AM_CXXFLAGS=""
     197AM_LDFLAGS = $(MWINDOWS)
     198orxonox_SOURCES = orxonox.cc \
     199                 world.cc \
     200                 player.cc \
     201                 collision.cc \
     202                 data_tank.cc \
     203                 world_entity.cc \
     204                 vector.cc \
     205                 camera.cc \
     206                 command_node.cc \
     207                 ini_parser.cc \
     208                 keynames.cc \
     209                 track.cc \
     210                 base_entity.cc \
     211                 game_loader.cc \
     212                 campaign.cc \
     213                 story_entity.cc \
     214                 environment.cc \
     215                 importer/object.cc \
     216                 importer/array.cc \
     217                 importer/material.cc \
     218                 list.cc \
     219                 IPhys.cc
     220
     221noinst_HEADERS = ability.h \
     222                 data_tank.h \
     223                 collision.h \
     224                 npc.h \
     225                 stdincl.h \
     226                 ai.h \
     227                 environment.h \
     228                 orxonox.h \
     229                 synchronisable.h \
     230                 base_entity.h \
     231                 error.h \
     232                 player.h \
     233                 track.h \
     234                 camera.h \
     235                 ini_parser.h \
     236                 power_up.h \
     237                 vector.h \
     238                 keynames.h \
     239                 proto_class.h \
     240                 world.h \
     241                 command_node.h \
     242                 list.h \
     243                 shoot_laser.h \
     244                 world_entity.h \
     245                 coordinates.h \
     246                 message_structures.h \
     247                 shoot_rocket.h \
     248                 list_template.h \
     249                 story_entity.h \
     250                 story_def.h \
     251                 game_loader.h \
     252                 campaign.h \
     253                 IPhys.h
     254
     255EXTRA_DIST = orxonox.conf
     256@HAVE_GTK2_FALSE@GTK_PROGS =
     257
     258### GTK_RELATED
     259@HAVE_GTK2_TRUE@GTK_PROGS = console
     260SUBDIRS = . \
     261          importer \
     262          gui \
     263          $(GTK_PROGS)
     264
     265all: all-recursive
    165266
    166267.SUFFIXES:
     
    229330
    230331@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IPhys.Po@am__quote@
     332@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
    231333@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base_entity.Po@am__quote@
    232334@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camera.Po@am__quote@
     335@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/campaign.Po@am__quote@
    233336@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision.Po@am__quote@
    234337@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command_node.Po@am__quote@
    235338@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_tank.Po@am__quote@
     339@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@
     340@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game_loader.Po@am__quote@
    236341@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ini_parser.Po@am__quote@
    237342@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keynames.Po@am__quote@
     343@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
     344@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/material.Po@am__quote@
     345@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Po@am__quote@
    238346@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox.Po@am__quote@
    239347@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@
     348@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/story_entity.Po@am__quote@
    240349@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/track.Po@am__quote@
    241350@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@
     
    258367@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    259368@am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     369
     370object.o: importer/object.cc
     371@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT object.o -MD -MP -MF "$(DEPDIR)/object.Tpo" -c -o object.o `test -f 'importer/object.cc' || echo '$(srcdir)/'`importer/object.cc; \
     372@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/object.Tpo" "$(DEPDIR)/object.Po"; else rm -f "$(DEPDIR)/object.Tpo"; exit 1; fi
     373@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/object.cc' object='object.o' libtool=no @AMDEPBACKSLASH@
     374@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/object.Po' tmpdepfile='$(DEPDIR)/object.TPo' @AMDEPBACKSLASH@
     375@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     376@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o object.o `test -f 'importer/object.cc' || echo '$(srcdir)/'`importer/object.cc
     377
     378object.obj: importer/object.cc
     379@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT object.obj -MD -MP -MF "$(DEPDIR)/object.Tpo" -c -o object.obj `if test -f 'importer/object.cc'; then $(CYGPATH_W) 'importer/object.cc'; else $(CYGPATH_W) '$(srcdir)/importer/object.cc'; fi`; \
     380@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/object.Tpo" "$(DEPDIR)/object.Po"; else rm -f "$(DEPDIR)/object.Tpo"; exit 1; fi
     381@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/object.cc' object='object.obj' libtool=no @AMDEPBACKSLASH@
     382@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/object.Po' tmpdepfile='$(DEPDIR)/object.TPo' @AMDEPBACKSLASH@
     383@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     384@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o object.obj `if test -f 'importer/object.cc'; then $(CYGPATH_W) 'importer/object.cc'; else $(CYGPATH_W) '$(srcdir)/importer/object.cc'; fi`
     385
     386array.o: importer/array.cc
     387@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT array.o -MD -MP -MF "$(DEPDIR)/array.Tpo" -c -o array.o `test -f 'importer/array.cc' || echo '$(srcdir)/'`importer/array.cc; \
     388@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/array.Tpo" "$(DEPDIR)/array.Po"; else rm -f "$(DEPDIR)/array.Tpo"; exit 1; fi
     389@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/array.cc' object='array.o' libtool=no @AMDEPBACKSLASH@
     390@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/array.Po' tmpdepfile='$(DEPDIR)/array.TPo' @AMDEPBACKSLASH@
     391@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     392@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o array.o `test -f 'importer/array.cc' || echo '$(srcdir)/'`importer/array.cc
     393
     394array.obj: importer/array.cc
     395@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT array.obj -MD -MP -MF "$(DEPDIR)/array.Tpo" -c -o array.obj `if test -f 'importer/array.cc'; then $(CYGPATH_W) 'importer/array.cc'; else $(CYGPATH_W) '$(srcdir)/importer/array.cc'; fi`; \
     396@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/array.Tpo" "$(DEPDIR)/array.Po"; else rm -f "$(DEPDIR)/array.Tpo"; exit 1; fi
     397@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/array.cc' object='array.obj' libtool=no @AMDEPBACKSLASH@
     398@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/array.Po' tmpdepfile='$(DEPDIR)/array.TPo' @AMDEPBACKSLASH@
     399@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     400@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o array.obj `if test -f 'importer/array.cc'; then $(CYGPATH_W) 'importer/array.cc'; else $(CYGPATH_W) '$(srcdir)/importer/array.cc'; fi`
     401
     402material.o: importer/material.cc
     403@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT material.o -MD -MP -MF "$(DEPDIR)/material.Tpo" -c -o material.o `test -f 'importer/material.cc' || echo '$(srcdir)/'`importer/material.cc; \
     404@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/material.Tpo" "$(DEPDIR)/material.Po"; else rm -f "$(DEPDIR)/material.Tpo"; exit 1; fi
     405@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/material.cc' object='material.o' libtool=no @AMDEPBACKSLASH@
     406@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/material.Po' tmpdepfile='$(DEPDIR)/material.TPo' @AMDEPBACKSLASH@
     407@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     408@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o material.o `test -f 'importer/material.cc' || echo '$(srcdir)/'`importer/material.cc
     409
     410material.obj: importer/material.cc
     411@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT material.obj -MD -MP -MF "$(DEPDIR)/material.Tpo" -c -o material.obj `if test -f 'importer/material.cc'; then $(CYGPATH_W) 'importer/material.cc'; else $(CYGPATH_W) '$(srcdir)/importer/material.cc'; fi`; \
     412@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/material.Tpo" "$(DEPDIR)/material.Po"; else rm -f "$(DEPDIR)/material.Tpo"; exit 1; fi
     413@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='importer/material.cc' object='material.obj' libtool=no @AMDEPBACKSLASH@
     414@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/material.Po' tmpdepfile='$(DEPDIR)/material.TPo' @AMDEPBACKSLASH@
     415@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     416@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o material.obj `if test -f 'importer/material.cc'; then $(CYGPATH_W) 'importer/material.cc'; else $(CYGPATH_W) '$(srcdir)/importer/material.cc'; fi`
    260417uninstall-info-am:
     418
     419# This directory's subdirectories are mostly independent; you can cd
     420# into them and run `make' without going through this Makefile.
     421# To change the values of `make' variables: instead of editing Makefiles,
     422# (1) if the variable is set in `config.status', edit `config.status'
     423#     (which will cause the Makefiles to be regenerated when you run `make');
     424# (2) otherwise, pass the desired values on the `make' command line.
     425$(RECURSIVE_TARGETS):
     426        @set fnord $$MAKEFLAGS; amf=$$2; \
     427        dot_seen=no; \
     428        target=`echo $@ | sed s/-recursive//`; \
     429        list='$(SUBDIRS)'; for subdir in $$list; do \
     430          echo "Making $$target in $$subdir"; \
     431          if test "$$subdir" = "."; then \
     432            dot_seen=yes; \
     433            local_target="$$target-am"; \
     434          else \
     435            local_target="$$target"; \
     436          fi; \
     437          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
     438           || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
     439        done; \
     440        if test "$$dot_seen" = "no"; then \
     441          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
     442        fi; test -z "$$fail"
     443
     444mostlyclean-recursive clean-recursive distclean-recursive \
     445maintainer-clean-recursive:
     446        @set fnord $$MAKEFLAGS; amf=$$2; \
     447        dot_seen=no; \
     448        case "$@" in \
     449          distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
     450          *) list='$(SUBDIRS)' ;; \
     451        esac; \
     452        rev=''; for subdir in $$list; do \
     453          if test "$$subdir" = "."; then :; else \
     454            rev="$$subdir $$rev"; \
     455          fi; \
     456        done; \
     457        rev="$$rev ."; \
     458        target=`echo $@ | sed s/-recursive//`; \
     459        for subdir in $$rev; do \
     460          echo "Making $$target in $$subdir"; \
     461          if test "$$subdir" = "."; then \
     462            local_target="$$target-am"; \
     463          else \
     464            local_target="$$target"; \
     465          fi; \
     466          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
     467           || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
     468        done && test -z "$$fail"
     469tags-recursive:
     470        list='$(SUBDIRS)'; for subdir in $$list; do \
     471          test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
     472        done
     473ctags-recursive:
     474        list='$(SUBDIRS)'; for subdir in $$list; do \
     475          test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
     476        done
    261477
    262478ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    270486tags: TAGS
    271487
    272 TAGS: $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     488TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
    273489                $(TAGS_FILES) $(LISP)
    274490        tags=; \
    275491        here=`pwd`; \
     492        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
     493          include_option=--etags-include; \
     494          empty_fix=.; \
     495        else \
     496          include_option=--include; \
     497          empty_fix=; \
     498        fi; \
     499        list='$(SUBDIRS)'; for subdir in $$list; do \
     500          if test "$$subdir" = .; then :; else \
     501            test ! -f $$subdir/TAGS || \
     502              tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
     503          fi; \
     504        done; \
    276505        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
    277506        unique=`for i in $$list; do \
     
    286515        fi
    287516ctags: CTAGS
    288 CTAGS: $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     517CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
    289518                $(TAGS_FILES) $(LISP)
    290519        tags=; \
     
    335564          fi; \
    336565        done
     566        list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
     567          if test "$$subdir" = .; then :; else \
     568            test -d "$(distdir)/$$subdir" \
     569            || mkdir "$(distdir)/$$subdir" \
     570            || exit 1; \
     571            (cd $$subdir && \
     572              $(MAKE) $(AM_MAKEFLAGS) \
     573                top_distdir="../$(top_distdir)" \
     574                distdir="../$(distdir)/$$subdir" \
     575                distdir) \
     576              || exit 1; \
     577          fi; \
     578        done
    337579check-am: all-am
    338 check: check-am
     580check: check-recursive
    339581all-am: Makefile $(PROGRAMS) $(HEADERS)
    340 installdirs:
     582installdirs: installdirs-recursive
     583installdirs-am:
    341584        for dir in "$(DESTDIR)$(bindir)"; do \
    342585          test -z "$$dir" || $(mkdir_p) "$$dir"; \
    343586        done
    344 install: install-am
    345 install-exec: install-exec-am
    346 install-data: install-data-am
    347 uninstall: uninstall-am
     587install: install-recursive
     588install-exec: install-exec-recursive
     589install-data: install-data-recursive
     590uninstall: uninstall-recursive
    348591
    349592install-am: all-am
    350593        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
    351594
    352 installcheck: installcheck-am
     595installcheck: installcheck-recursive
    353596install-strip:
    354597        $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
     
    366609        @echo "This command is intended for maintainers to use"
    367610        @echo "it deletes files that may require special tools to rebuild."
    368 clean: clean-am
     611clean: clean-recursive
    369612
    370613clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
    371614
    372 distclean: distclean-am
     615distclean: distclean-recursive
    373616        -rm -rf ./$(DEPDIR)
    374617        -rm -f Makefile
     
    376619        distclean-tags
    377620
    378 dvi: dvi-am
     621dvi: dvi-recursive
    379622
    380623dvi-am:
    381624
    382 html: html-am
    383 
    384 info: info-am
     625html: html-recursive
     626
     627info: info-recursive
    385628
    386629info-am:
     
    390633install-exec-am: install-binPROGRAMS
    391634
    392 install-info: install-info-am
     635install-info: install-info-recursive
    393636
    394637install-man:
     
    396639installcheck-am:
    397640
    398 maintainer-clean: maintainer-clean-am
     641maintainer-clean: maintainer-clean-recursive
    399642        -rm -rf ./$(DEPDIR)
    400643        -rm -f Makefile
    401644maintainer-clean-am: distclean-am maintainer-clean-generic
    402645
    403 mostlyclean: mostlyclean-am
     646mostlyclean: mostlyclean-recursive
    404647
    405648mostlyclean-am: mostlyclean-compile mostlyclean-generic
    406649
    407 pdf: pdf-am
     650pdf: pdf-recursive
    408651
    409652pdf-am:
    410653
    411 ps: ps-am
     654ps: ps-recursive
    412655
    413656ps-am:
     
    415658uninstall-am: uninstall-binPROGRAMS uninstall-info-am
    416659
    417 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
    418         clean-generic ctags distclean distclean-compile \
    419         distclean-generic distclean-tags distdir dvi dvi-am html \
     660uninstall-info: uninstall-info-recursive
     661
     662.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
     663        clean clean-binPROGRAMS clean-generic clean-recursive ctags \
     664        ctags-recursive distclean distclean-compile distclean-generic \
     665        distclean-recursive distclean-tags distdir dvi dvi-am html \
    420666        html-am info info-am install install-am install-binPROGRAMS \
    421667        install-data install-data-am install-exec install-exec-am \
    422668        install-info install-info-am install-man install-strip \
    423         installcheck installcheck-am installdirs maintainer-clean \
    424         maintainer-clean-generic mostlyclean mostlyclean-compile \
    425         mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
    426         uninstall-am uninstall-binPROGRAMS uninstall-info-am
    427 
    428 
    429 #  uncomment the following if bencoder requires the math library
     669        installcheck installcheck-am installdirs installdirs-am \
     670        maintainer-clean maintainer-clean-generic \
     671        maintainer-clean-recursive mostlyclean mostlyclean-compile \
     672        mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
     673        tags tags-recursive uninstall uninstall-am \
     674        uninstall-binPROGRAMS uninstall-info-am
     675
     676
     677#  uncomment the following if orxonox requires the math library
    430678#orxonox_LDADD=-lm
    431679
  • orxonox/branches/buerli/src/ability.h

    r2043 r3238  
    11
    2 #ifndef ABILITY_H
    3 #define ABILITY_H
     2#ifndef _ABILITY_H
     3#define _ABILITY_H
    44
    55#include "data_tank.h"
     
    1414};
    1515
    16 #endif
     16#endif /* _ABILITY_H */
  • orxonox/branches/buerli/src/ai.h

    r1956 r3238  
    11
    2 #ifndef AI_H
    3 #define AI_H
     2#ifndef _AI_H
     3#define _AI_H
    44
    55#include "data_tank.h"
     
    1313};
    1414
    15 #endif
     15#endif /* _AI_H */
  • orxonox/branches/buerli/src/base_entity.h

    r2551 r3238  
    11
    2 #ifndef BASE_ENTITY_H
    3 #define BASE_ENTITY_H
     2#ifndef _BASE_ENTITY_H
     3#define _BASE_ENTITY_H
    44
    55#include "stdincl.h"
     
    1414};
    1515
    16 #endif
     16#endif /* _BASE_ENTITY_H */
  • orxonox/branches/buerli/src/camera.cc

    r2707 r3238  
    3030{
    3131  this->world = world;
    32   bound = NULL;
     32  this->bound = NULL;
    3333  /* give it some physical live */
    34   m = 10;
    35   a = new Vector(0.0, 0.0, 0.0);
    36   v = new Vector(0.0, 0.0, 0.0);
    37   fs = new Vector(0.0, 0.0, 0.0);
    38   cameraMode = NORMAL;
    39   deltaTime = 3000.0;
    40   cameraOffset = 1.0;
    41   cameraOffsetZ = 10.0;
    42   t = 0.0;
    43 
    44   actual_place.r.x = 0.0;
    45   actual_place.r.y = 10.0;
    46   actual_place.r.z = -5.0;
     34  this->m = 10;
     35  this->a = new Vector(0.0, 0.0, 0.0);
     36  this->v = new Vector(0.0, 0.0, 0.0);
     37  this->fs = new Vector(0.0, 0.0, 0.0);
     38  this->cameraMode = NORMAL;
     39  this->deltaTime = 3000.0;
     40  this->cameraOffset = 1.0;
     41  this->cameraOffsetZ = 10.0;
     42  this->t = 0.0;
     43
     44  this->actualPlace.r.x = 0.0;
     45  this->actualPlace.r.y = 10.0;
     46  this->actualPlace.r.z = -5.0;
    4747}
    4848
     
    6161   as smooth camera movement or swaying).
    6262*/
    63 void Camera::time_slice (Uint32 deltaT)
    64 {
    65   if(t <= deltaTime)
    66     {t += deltaT;}
     63void Camera::timeSlice (Uint32 deltaT)
     64{
     65  if( this->t <= deltaTime)
     66    {this->t += deltaT;}
    6767  //printf("time is: t=%f\n", t );
    68   update_desired_place ();
    69   jump (NULL);
     68  updateDesiredPlace();
     69  jump(NULL);
    7070}
    7171
     
    7676   bound entity's position on the track.
    7777*/
    78 void Camera::update_desired_place ()
     78void Camera::updateDesiredPlace ()
    7979{
    8080  switch(cameraMode)
     
    8989        if( bound != NULL)
    9090          {
    91             bound->get_lookat (&lookat);
    92             orx->get_world()->calc_camera_pos (&lookat, &plFocus);
     91            bound->getLookat (&lookat);
     92            orx->getWorld()->calcCameraPos (&lookat, &plFocus);
    9393            Quaternion *fr;
    9494            if(t < 20.0)
     
    101101               
    102102                Vector op(1.0, 0.0, 0.0);
    103                 float angle = angle_deg(op, *start);
     103                float angle = angleDeg(op, *start);
    104104                printf("angle is: %f\n", angle);
    105105
     
    144144
    145145            Vector ursp(0.0, 0.0, 0.0);
    146             desired_place.r = /*plFocus.r -*/ ursp - res->apply(r);
    147 
    148             printf("desired place is: %f, %f, %f\n", desired_place.r.x, desired_place.r.y, desired_place.r.z);
     146            desiredPlace.r = /*plFocus.r -*/ ursp - res->apply(r);
     147
     148            printf("desired place is: %f, %f, %f\n", desiredPlace.r.x, desiredPlace.r.y, desiredPlace.r.z);
    149149            //plLastBPlace = *bound->get_placement();
    150150          }
     
    153153    case SMOTH_FOLLOW:
    154154      {
    155         Placement *plBound = bound->get_placement();
     155        Placement *plBound = bound->getPlacement();
    156156        Location lcBound;
    157157        if(bound != null)
    158158          {
    159             bound->get_lookat(&lcBound);
     159            bound->getLookat(&lcBound);
    160160            Vector vDirection(0.0, 0.0, 1.0);
    161161            vDirection = plBound->w.apply(vDirection);
    162             desired_place.r = (vDirection * ((lcBound.dist-10.0)/* / l*/)) + Vector(0,0,5.0);
     162            desiredPlace.r = (vDirection * ((lcBound.dist-10.0)/* / l*/)) + Vector(0,0,5.0);
    163163          }
    164164        break;
     
    169169        if(bound != null)
    170170          {
    171             Placement *plBound = bound->get_placement();
     171            Placement *plBound = bound->getPlacement();
    172172            Vector vDirection(0.0, 0.0, 1.0);
    173173            Vector eclipticOffset(0.0, 0.0, 5.0);
    174174            vDirection = plBound->w.apply(vDirection);
    175             desired_place.r = plBound->r - vDirection*10 + eclipticOffset;
     175            desiredPlace.r = plBound->r - vDirection*10 + eclipticOffset;
    176176          }
    177177        break;
     
    182182      if( bound != NULL && world != NULL )
    183183        {
    184           bound->get_lookat (&lookat);
    185           world->calc_camera_pos (&lookat, &desired_place);
     184          bound->getLookat (&lookat);
     185          world->calcCameraPos (&lookat, &desiredPlace);
    186186        }
    187187      else
    188188        {
    189           desired_place.r = Vector (0,0,0);
    190           desired_place.w = Quaternion ();
     189          desiredPlace.r = Vector (0,0,0);
     190          desiredPlace.w = Quaternion ();
    191191        }
    192192      break;
     
    206206  // view
    207207  // TO DO: implement options for frustum generation
    208   glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 250.0);
     208  //glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 250.0);
     209  gluPerspective(60, 1.2f, 0.1, 250);
     210 
    209211  //Vector up(0,0,1);
    210212  //Vector dir(1,0,0);
     
    235237  // rotation
    236238  float matrix[4][4];
    237   actual_place.w.conjugate().matrix (matrix);
     239  actualPlace.w.conjugate().matrix (matrix);
    238240  /* orientation and */
    239241  glMultMatrixf ((float*)matrix);
    240242  /*  translation */
    241   glTranslatef (-actual_place.r.x, -actual_place.r.y,- actual_place.r.z);
    242   //Placement *plBound = bound->get_placement();
     243  glTranslatef (-actualPlace.r.x, -actualPlace.r.y,- actualPlace.r.z);
     244//Placement *plBound = bound->get_placement();
    243245
    244246  // ===== second camera control calculation option
    245247  /*
    246     gluLookAt(actual_place.r.x, actual_place.r.y, actual_place.r.z,
     248   gluLookAt(actual_place.r.x, actual_place.r.y, actual_place.r.z,
    247249              plBound->r.x, plBound->r.y, plBound->r.z,
    248250              0.0, 0.0, 1.0);
     
    263265  if( plc == NULL)
    264266    {
    265       actual_place = desired_place;
     267      actualPlace = desiredPlace;
    266268      //printf("Camera|jump: camer@ %f, %f, %f\n\n", actual_place.r.x, actual_place.r.y, actual_place.r.z);
    267269    }
    268270  else
    269271    {
    270       desired_place = *plc;
    271       actual_place = *plc;
     272      desiredPlace = *plc;
     273      actualPlace = *plc;
    272274    }
    273275}
     
    277279  \param entity: The enitity to bind the camera to
    278280       
    279         This sets the focus of the camera to the given entity. This means that it will use the given WorldEntity's
    280         Location and get_lookat() to determine the viewpoint the camera will render from.
    281         Note that you cannot bind a camera to a free entity.
     281  This sets the focus of the camera to the given entity. This means that it will use the given WorldEntity's
     282  Location and get_lookat() to determine the viewpoint the camera will render from.
     283  Note that you cannot bind a camera to a free entity.
    282284*/
    283285void Camera::bind (WorldEntity* entity)
     
    285287  if( entity != NULL)
    286288    {
    287       if( entity->isFree ()) printf("Cannot bind camera to free entity");
     289      if( entity->isFree()) printf("Cannot bind camera to free entity");
    288290      else
    289291        {
    290           bound = entity;
     292          this->bound = entity;
    291293        }
    292294    }
     
    298300  this->world = world;
    299301}
     302
     303
     304/**
     305   \brief destroy, reset the camera so that it doesn't perform anything anymore
     306
     307*/
     308void Camera::destroy()
     309{
     310  this->bound = NULL;
     311  this->world = NULL;
     312}
  • orxonox/branches/buerli/src/camera.h

    r2707 r3238  
    44*/
    55
    6 #ifndef CAMERA_H
    7 #define CAMERA_H
     6#ifndef _CAMERA_H
     7#define _CAMERA_H
    88
    99#include "stdincl.h"
     
    2626 private:
    2727  WorldEntity* bound;           //!< the WorldEntity the Camera is bound to
    28   Placement actual_place;               //!< the Camera's current position
    29   Placement desired_place;        //!< where the Camera should be according to calculations
     28  Placement actualPlace;                //!< the Camera's current position
     29  Placement desiredPlace;        //!< where the Camera should be according to calculations
    3030  World* world;
    3131 
     
    5454  CAMERA_MODE cameraMode; //!< saves the camera mode: how the camera follows the entity
    5555 
    56   void update_desired_place ();
     56  void updateDesiredPlace ();
    5757 
    5858 public:
     
    6060  ~Camera ();
    6161 
    62   void time_slice (Uint32 deltaT);
     62  void timeSlice (Uint32 deltaT);
    6363  void apply ();
    6464  void bind (WorldEntity* entity);
    6565  void jump (Placement* plc);
     66  void destroy();
    6667
    6768  void setWorld(World* world); 
     
    6970};
    7071
    71 #endif
     72#endif /* _CAMERA_H */
  • orxonox/branches/buerli/src/campaign.cc

    r2707 r3238  
    2727Campaign::Campaign ()
    2828{
    29   this->entities = new List<StoryEntity>();
     29  this->entities = new ListTemplate<StoryEntity>();
    3030  this->isInit = false;
    3131}
     
    3434
    3535
    36 Error Campaign::init()
     36ErrorMessage Campaign::init()
    3737{
    3838  this->isInit = true;
     
    4848    want to queue up in the campaign.
    4949*/
    50 void Campaign::addEntity(StoryEntity* se, Uint32 storyID)
     50void Campaign::addEntity(StoryEntity* se, int storyID)
    5151{
    5252  se->setStoryID(storyID);
     
    6060
    6161
    62 void Campaign::removeEntity(Uint32 storyID)
     62void Campaign::removeEntity(int storyID)
    6363{
    6464  this->removeEntity(this->getStoryEntity(storyID));
     
    7373
    7474
    75 Error Campaign::start()
     75ErrorMessage Campaign::start()
    7676{
    7777  this->start(0);
    7878}
    7979
    80 Error Campaign::start(Uint32 storyID = 0)
     80ErrorMessage Campaign::start(int storyID = 0)
    8181{
    8282  printf("World::start() - starting new StoryEntity Nr:%i\n", storyID);
    83   Error errorCode;
    84   if(!this->isInit) return errorCode;
    85   if(storyID == WORLD_ID_GAMEEND) return errorCode;
     83  ErrorMessage errorCode;
     84  if( !this->isInit) return errorCode;
     85  if( storyID == WORLD_ID_GAMEEND) return errorCode;
    8686  this->running = true;
    8787  StoryEntity* se = this->getStoryEntity(storyID);
    88   while(se != NULL && this->running)
     88  this->currentEntity = se;
     89  while( se != NULL && this->running)
    8990    {
    90       se = this->getStoryEntity(storyID);
    91       this->currentEntity = se;
    92      
    93       se->displayEntityScreen();
     91      se->displayLoadScreen();
    9492      se->load();
    9593      se->init();
    96       se->releaseEntityScreen();
     94      se->releaseLoadScreen();
    9795      se->start();
     96      se->destroy();
     97     
     98      delete se;
    9899
    99100      int nextWorldID = se->getNextStoryID();
    100       if(nextWorldID == WORLD_ID_GAMEEND) return errorCode;
     101      //printf("Campaing::start() - got nextWorldID = %i\n", nextWorldID);
    101102      se = this->getStoryEntity(nextWorldID);
    102       if(se == NULL)
    103         printf("Campaign::start() - ERROR: world it not found, oh oh...");
     103      this->currentEntity = se;
     104      if( ( nextWorldID == WORLD_ID_GAMEEND) ||( se == NULL) )
     105        {
     106          printf("Campaign::start() - quitting campaing story loop\n");
     107          if(se != NULL)
     108            delete se;
     109          return errorCode;
     110        }
     111     
    104112    }
    105113}
    106114
    107 Error Campaign::stop()
     115ErrorMessage Campaign::stop()
    108116{
    109117  this->running = false;
     
    111119    {
    112120      this->currentEntity->stop();
    113       delete this->currentEntity;
    114       this->currentEntity = NULL;
     121      //delete this->currentEntity;
     122      //this->currentEntity = NULL;
    115123    }
    116124}
    117125
    118 Error Campaign::pause()
     126ErrorMessage Campaign::pause()
    119127{
    120128  if(this->currentEntity != NULL)
     
    123131
    124132
    125 Error Campaign::resume()
     133ErrorMessage Campaign::resume()
    126134{
    127135  if(this->currentEntity != NULL)
     
    130138
    131139
     140void Campaign::destroy()
     141{
     142  if(this->currentEntity != NULL)
     143    {
     144      this->currentEntity->destroy();
     145      delete this->currentEntity;
     146      this->currentEntity = NULL;
     147    }
     148}
     149
     150/*
     151  \brief this changes to the next level
     152*/
    132153void Campaign::nextLevel()
    133154{
    134   printf("Campaign|nextLevel\n");
    135   int nextID = this->currentEntity->getNextStoryID();
    136   this->stop();
    137   this->start(nextID);
     155  printf("Campaign:nextLevel()\n");
     156  //int nextID = this->currentEntity->getNextStoryID();
     157  //this->stop();
     158  //this->start(nextID);
     159  this->currentEntity->stop();
    138160}
    139161
     162/*
     163  \brief change to the previous level - not implemented
     164
     165  this propably useless
     166*/
    140167void Campaign::previousLevel()
    141168{}
    142169
    143170
    144 StoryEntity* Campaign::getStoryEntity(Uint32 storyID)
     171/*
     172  \brief lookup a entity with a given id
     173  \param story id to be lookuped
     174  \returns the entity found or NULL if search ended without match
     175*/
     176StoryEntity* Campaign::getStoryEntity(int storyID)
    145177{
    146   List<StoryEntity>* l;
    147   StoryEntity* entity;
    148   l = this->entities->get_next(); 
     178  //printf("Campaing::getStoryEntity(%i) - getting next Entity\n", storyID);
     179  if( storyID == WORLD_ID_GAMEEND)
     180    return NULL;
     181  ListTemplate<StoryEntity>* l;
     182  StoryEntity* entity = NULL;
     183  l = this->entities->getNext(); 
    149184  while( l != NULL)
    150185    {
    151       entity = l->get_object();
    152       l = l->get_next();
    153       if(entity->getStoryID() == storyID)
    154         return entity;
     186      entity = l->getObject();
     187      l = l->getNext();
     188      int id = entity->getStoryID();
     189      //printf("Campaing::getStoryEntity() - now looping, found entity nr=%i\n", id);
     190      if(id == storyID)
     191        {
     192          //printf("Campaing::getStoryEntity() - yea, this is what we where looking for: %id\n");
     193          return entity;
     194        }
    155195    }
    156196  return NULL;
  • orxonox/branches/buerli/src/campaign.h

    r2707 r3238  
    11
    2 #ifndef CAMPAIGN_H
    3 #define CAMPAIGN_H
     2#ifndef _CAMPAIGN_H
     3#define _CAMPAIGN_H
    44
    55#include "stdincl.h"
     
    1717  StoryEntity* currentEntity;
    1818
    19   virtual Error init();
    20   virtual Error start();
    21   virtual Error start(Uint32 storyID);
    22   virtual Error stop();
    23   virtual Error pause();
    24   virtual Error resume();
     19  virtual ErrorMessage init();
     20  virtual ErrorMessage start();
     21  virtual ErrorMessage start(int storyID);
     22  virtual ErrorMessage stop();
     23  virtual ErrorMessage pause();
     24  virtual ErrorMessage resume();
    2525
    26   void addEntity(StoryEntity* se, Uint32 storyID);
     26  virtual void destroy();
     27
     28  void addEntity(StoryEntity* se, int storyID);
    2729  void addEntity(StoryEntity* se);
    28   void removeEntity(Uint32 storyID);
     30  void removeEntity(int storyID);
    2931  void removeEntity(StoryEntity* se);
    3032 
     
    3335
    3436 private:
    35   List<StoryEntity>* entities;
     37  ListTemplate<StoryEntity>* entities;
    3638  bool running;
    3739
    38   StoryEntity* getStoryEntity(Uint32 storyID);
     40  StoryEntity* getStoryEntity(int storyID);
    3941};
    4042
    41 #endif
     43#endif /* _CAMPAIGN_H */
  • orxonox/branches/buerli/src/collision.cc

    r2190 r3238  
    2828CollisionCluster::CollisionCluster (float rad = 1.0, Vector mid = Vector(0,0,0))
    2929{
    30   root = (CC_Tree*) malloc( sizeof( CC_Tree));
     30  root = (CCTree*) malloc( sizeof( CCTree));
    3131  root->n = 0;
    3232  root->data.ID = 0;
     
    6262  }
    6363 
    64   root = load_CC_Tree (stream);
     64  root = loadCCTree (stream);
    6565  fclose (stream);
    6666}
     
    7171CollisionCluster::~CollisionCluster ()
    7272{
    73   free_CC_Tree( root);
     73  freeCCTree(root);
    7474}
    7575
     
    8585  stream = fopen( filename, "wb");
    8686  if( stream == NULL) return -1;
    87   r = save_CC_Tree (root, stream);
     87  r = saveCCTree(root, stream);
    8888  fclose (stream);
    8989  return r;
     
    9999   \return true on collision, false otherwise. If true is returned, the flag in ahitflags that symbolises the hit subsphere is set, and impactpoint is set to the Location where the intersection occured
    100100*/
    101 bool check_trace (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Line* trace, Vector* impactpoint)
    102 {
    103         CC_Tree* t;
     101bool checkTrace (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Line* trace, Vector* impactpoint)
     102{
     103        CCTree* t;
    104104        if( (t = a->root) == NULL) return false;
    105105       
    106   return cctree_trace( pa, t, ahitflags, trace, impactpoint);
     106  return ccTreeTrace( pa, t, ahitflags, trace, impactpoint);
    107107}
    108108
     
    118118   If true is returned, all flags in ahitflags and bhitflags that symbolize intersecting subspheres in the respective CollisionCluster are set
    119119*/
    120 bool check_collision (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Placement* pb, const CollisionCluster* b, unsigned long* bhitflags)
    121 {
    122   CC_Tree* ta, *tb;
     120bool checkCollision (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Placement* pb, const CollisionCluster* b, unsigned long* bhitflags)
     121{
     122  CCTree* ta, *tb;
    123123  if( (ta = a->root) == NULL) return false;
    124124  if( (tb = b->root) == NULL) return false;
    125125 
    126   return cctree_iterate(pa, ta, ahitflags, pb, tb, bhitflags);
     126  return ccTreeIterate(pa, ta, ahitflags, pb, tb, bhitflags);
    127127}
    128128
     
    135135   \return true on intersection, false otherwise
    136136*/
    137 bool sphere_sphere_collision( Vector m1, float r1, Vector m2, float r2)
     137bool sphereSphereCollision( Vector m1, float r1, Vector m2, float r2)
    138138{
    139139  if ((m1-m2).len() < r1+r2) return true;
     
    149149   \return true on intersection, false otherwise. If true is returned, impactpoint is set to the loaction where the intersection occured
    150150*/
    151 bool trace_sphere_collision( Vector m, float r, const Line* l, Vector* impactpoint)
     151bool traceSphereCollision( Vector m, float r, const Line* l, Vector* impactpoint)
    152152{
    153153  float A, B, C, D, t[2];
     
    176176}
    177177
    178 bool cctree_iterate(const Placement* pa, CC_Tree* ta, unsigned long* ahitflags, const Placement* pb, CC_Tree* tb, unsigned long* bhitflags)
     178bool ccTreeIterate(const Placement* pa, CCTree* ta, unsigned long* ahitflags, const Placement* pb, CCTree* tb, unsigned long* bhitflags)
    179179{
    180180  bool r = false;
     
    182182  Vector mra = pa->r + pa->w.apply(ta->m);
    183183  Vector mrb = pb->r + pb->w.apply(tb->m);
    184   CC_Tree* use_a, *use_b;
    185  
    186   if( use_a == NULL || use_b == NULL) return false;
    187  
    188   if( sphere_sphere_collision( mra, ta->r, mrb, tb->r))
     184  CCTree* useA, *useB;
     185 
     186  if( useA == NULL || useB == NULL) return false;
     187 
     188  if( sphereSphereCollision( mra, ta->r, mrb, tb->r))
    189189  {
    190190    if( ta->n == 0 && tb->n == 0)
     
    196196    for( ia = 0; ia < ta->n || ta->n == 0; ia++)
    197197    {
    198       if( ta->n == 0) use_a = ta;
    199       else use_a = ta->data.b[ia];
     198      if( ta->n == 0) useA = ta;
     199      else useA = ta->data.b[ia];
    200200      for( ib = 0; ib < tb->n || ta->n == 0; ib++)
    201201      {
    202         if( ta->n == 0) use_b = ta;
    203         else use_b = ta->data.b[ib];
     202        if( ta->n == 0) useB = ta;
     203        else useB = ta->data.b[ib];
    204204       
    205         r = r || cctree_iterate( pa, use_a, ahitflags, pb, use_b, bhitflags);
     205        r = r || ccTreeIterate( pa, useA, ahitflags, pb, useB, bhitflags);
    206206       
    207207        if( tb->n == 0) break;
     
    233233
    234234/**
    235    \brief frees the memory allocated in a CC_Tree
    236 */
    237 void free_CC_Tree( CC_Tree* tree)
     235   \brief frees the memory allocated in a CCTree
     236*/
     237void freeCCTree( CCTree* tree)
    238238{
    239239  if (tree == NULL) return;
    240240  for (int i = 0; i < tree->n; i++)
    241241  {
    242     free_CC_Tree( tree->data.b[i]);
     242    freeCCTree(tree->data.b[i]);
    243243  }
    244244  free( tree);
     
    246246
    247247/**
    248    \brief loads a CC_Tree from a stream
    249 */
    250 CC_Tree* load_CC_Tree (FILE* stream)
    251 {
    252   CC_Tree* tree = NULL;
    253   CC_Tree** branches = NULL;
     248   \brief loads a CCTree from a stream
     249*/
     250CCTree* loadCCTree (FILE* stream)
     251{
     252  CCTree* tree = NULL;
     253  CCTree** branches = NULL;
    254254  float buf[4];
    255255  unsigned long n;
     
    267267  else
    268268  {
    269     branches = (CC_Tree**)malloc( sizeof(CC_Tree*) * n);
     269    branches = (CCTree**)malloc( sizeof(CCTree*) * n);
    270270    for( int i = 0; i < n; i++)
    271271    {
    272       if ((branches[i] = load_CC_Tree (stream)) == NULL)
     272      if ((branches[i] = loadCCTree (stream)) == NULL)
    273273      {
    274274        for( int j = 0; j < i; j++)
    275275        {
    276           free_CC_Tree (branches[j]);
    277           free (branches);
     276          freeCCTree (branches[j]);
     277          free(branches);
    278278          return NULL;
    279279        }
     
    283283 
    284284  // assemble
    285   tree = (CC_Tree*) malloc (sizeof(CC_Tree));
     285  tree = (CCTree*) malloc (sizeof(CCTree));
    286286  tree->m.x = buf[0];
    287287  tree->m.y = buf[1];
     
    297297
    298298/**
    299    \brief saves a CC_Tree to a stream
    300 */
    301 int save_CC_Tree (CC_Tree* tree, FILE* stream)
     299   \brief saves a CCTree to a stream
     300*/
     301int saveCCTree (CCTree* tree, FILE* stream)
    302302{
    303303  float buf[4];
     
    321321    for( int i = 0; i < tree->n; i++)
    322322    {
    323       if ( save_CC_Tree (tree->data.b[i], stream) == -1) return -1;
     323      if ( saveCCTree (tree->data.b[i], stream) == -1) return -1;
    324324    }
    325325  }
     
    329329}
    330330
    331 bool cctree_trace( const Placement* p, CC_Tree* t, unsigned long* hitflags, const Line* trace, Vector* impactpoint)
     331bool ccTreeTrace( const Placement* p, CCTree* t, unsigned long* hitflags, const Line* trace, Vector* impactpoint)
    332332{
    333333  bool r = false;
    334334  int i;
    335335  Vector mr = p->r + p->w.apply (t->m);
    336   CC_Tree* use_t;
     336  CCTree* useT;
    337337  Vector* ips;
    338338  unsigned long* hfs;
    339339 
    340   if( trace_sphere_collision (mr, t->r, trace, impactpoint))
     340  if( traceSphereCollision (mr, t->r, trace, impactpoint))
    341341  {
    342342        if( t->n == 0)
     
    352352                for (i = 0; i < t->n; i++)
    353353                {
    354                         r = r || cctree_trace (p, t->data.b[i], &(hfs[i]), trace, &(ips[i]));
     354                        r = r || ccTreeTrace (p, t->data.b[i], &(hfs[i]), trace, &(ips[i]));
    355355                }
    356356                if( r)
  • orxonox/branches/buerli/src/collision.h

    r2190 r3238  
    44*/
    55
    6 #ifndef COLLISION_H
    7 #define COLLISION_H
     6#ifndef _COLLISION_H
     7#define _COLLISION_H
    88
    99#include "vector.h"
     
    1414
    1515//! Tree structure used by the CollisionCluster
    16 typedef struct CC_Tree
     16typedef struct CCTree
    1717{
    1818  unsigned long n;
    1919  union
    2020  {
    21   struct CC_Tree** b;
     21  struct CCTree** b;
    2222  unsigned long ID;
    2323  } data;
    2424  float r;
    2525  Vector m;
    26 } CC_Tree;
     26} CCTree;
    2727
    2828//! Basic collision detection class
     
    4242class CollisionCluster {
    4343 
    44   CC_Tree* root;
     44  CCTree* root;
    4545 
    4646 
     
    5252  int store (char* filename);
    5353 
    54   friend bool cctree_trace( const Placement* p, CC_Tree* t, unsigned long* hitflags, const Line* trace, Vector* impactpoint);
    55   friend bool cctree_iterate(const Placement* pa, CC_Tree* ta, unsigned long* ahitflags, const Placement* pb, CC_Tree* tb, unsigned long* bhitflags);
    56   friend bool check_trace (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Line* trace, Vector* impactpoint);
    57   friend bool check_collision (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Placement* pb, const CollisionCluster* b, unsigned long* bhitflags);
     54  friend bool ccTreeTrace( const Placement* p, CCTree* t, unsigned long* hitflags, const Line* trace, Vector* impactpoint);
     55  friend bool ccTreeIterate(const Placement* pa, CCTree* ta, unsigned long* ahitflags, const Placement* pb, CCTree* tb, unsigned long* bhitflags);
     56  friend bool checkTrace (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Line* trace, Vector* impactpoint);
     57  friend bool checkCollision (const Placement* pa, const CollisionCluster* a, unsigned long* ahitflags, const Placement* pb, const CollisionCluster* b, unsigned long* bhitflags);
    5858};
    5959
    60 bool sphere_sphere_collision( Vector m1, float r1, Vector m2, float r2);
    61 bool trace_sphere_collision( Vector m, float r, const Line* l, Vector* impactpoint);
     60bool sphereSphereCollision( Vector m1, float r1, Vector m2, float r2);
     61bool traceSphereCollision( Vector m, float r, const Line* l, Vector* impactpoint);
    6262
    6363void setflag( unsigned long* flags, unsigned long ID);
    6464
    65 void free_CC_Tree( CC_Tree* tree);
    66 CC_Tree* load_CC_Tree (FILE* stream);
    67 int save_CC_Tree (CC_Tree* tree, FILE* stream);
     65void freeCCTree( CCTree* tree);
     66CCTree* loadCCTree (FILE* stream);
     67int saveCCTree (CCTree* tree, FILE* stream);
    6868
    69 #endif
     69#endif /* _COLLISION_H */
  • orxonox/branches/buerli/src/command_node.cc

    r2707 r3238  
    1111   ### File Specific:
    1212   main-programmer: Christian Meyer
    13    co-programmer: ...
     13   co-programmer: Patrick Boenzli
    1414*/
    1515
     
    2020#include "world_entity.h"
    2121#include "game_loader.h"
     22#include "world.h"
    2223
    2324#include <stdio.h>
     
    3334CommandNode::CommandNode (int ID)
    3435{
    35   bound = new List<WorldEntity>();
    36   aliases = NULL;
    37   netID = ID;
    38   bLocalInput = false;
     36  this->bound = new tList<WorldEntity>();
     37  this->aliases = NULL;
     38  this->netID = ID;
     39  this->bLocalInput = false;
     40  this->bEnabled = true;
     41  this->world = NULL;
    3942}
    4043
     
    4548CommandNode::CommandNode (char* filename = DEFAULT_KEYBIND_FILE)
    4649{
    47   aliases = NULL;
    48   bLocalInput = true;
    49   netID = 0;
    50   bound = new List<WorldEntity>();
    51   load_bindings (filename);
     50  this->aliases = NULL;
     51  this->bLocalInput = true;
     52  this->netID = 0;
     53  this->bound = new tList<WorldEntity>();
     54  this->bEnabled = true;
     55  this->world = NULL;
     56  this->loadBindings (filename);
    5257}
    5358
     
    5863{
    5964  if( aliases != NULL) free (aliases);
    60   if( bound != NULL) delete bound;
    61 }
     65  if( bound != NULL) delete bound; /* \todo should this delete bound? dangerous FIX */
     66}
     67
     68
     69/**
     70  \brief this resets the command node
     71
     72   deleting all data contained in the command node to fill it up again
     73
     74  \todo coppling to different game-entities
     75  \todo reset/destroy has to be redesigned
     76*/
     77
     78void CommandNode::reset()
     79{
     80  this->bound->destroy();
     81  //this->bound = NULL; /* \todo this produces a NULLpointer error.. FIX */
     82  this->bEnabled = false;
     83  this->world = NULL;
     84}
     85
     86void CommandNode::enable(bool bEnabled)
     87{
     88  this->bEnabled = bEnabled;
     89}
     90
     91
     92/**
     93  \brief adds Node to a GameWorld
     94
     95   this is usefull, if you want to catch events in a world class. usualy
     96   this is done automaticaly via GameLoader. Reset it via
     97   CommandNode::reset()
     98
     99*/
     100void CommandNode::addToWorld(World* world)
     101{
     102  this->world = world;
     103}
     104
    62105
    63106/**
     
    65108   \param filename: The path and name of the file to load the bindings from
    66109*/
    67 void CommandNode::load_bindings (char* filename)
     110void CommandNode::loadBindings (char* filename)
    68111{
    69112  FILE* stream;
     
    82125  // create parser
    83126  IniParser parser (filename);
    84   if( parser.get_section ("Bindings") == -1)
     127  if( parser.getSection ("Bindings") == -1)
    85128    {
    86129      printf("Could not find key bindings in %s\n", filename);
     
    96139  int* index;
    97140 
    98   while( parser.next_var (namebuf, valuebuf) != -1)
    99     {
    100       index = name_to_index (namebuf);
     141  while( parser.nextVar (namebuf, valuebuf) != -1)
     142    {
     143      index = nameToIndex (namebuf);
    101144      switch( index[0])
    102145        {
    103146        case 0:
    104           printf("Key binding %d(%s) set to %s\n", index[1], SDLK_to_keyname( index[1]), valuebuf);
     147          printf("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), valuebuf);
    105148          strcpy (aliases->keys[index[1]], valuebuf);
    106149          break;
    107150        case 1:
    108           printf("Button binding %d(%s) set to %s\n", index[1], SDLB_to_buttonname( index[1]), valuebuf);
     151          printf("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), valuebuf);
    109152          strcpy (aliases->buttons[index[1]], valuebuf);
    110153          break;
     
    123166void CommandNode::bind (WorldEntity* entity)
    124167{
    125   bound->add (entity, LIST_ADD_NEXT, true);
     168  bound->add (entity);
    126169}
    127170
     
    132175void CommandNode::unbind (WorldEntity* entity)
    133176{
    134   bound->remove (entity, LIST_FIND_FW);
    135 }
    136 
    137 int* CommandNode::name_to_index (char* name)
     177  bound->remove (entity);
     178}
     179
     180int* CommandNode::nameToIndex (char* name)
    138181{
    139182  coord[0] = -1;
    140183  coord[1] = -1;
    141184  int c;
    142   if( (c = keyname_to_SDLK (name)) != -1)
     185  if( (c = keynameToSDLK (name)) != -1)
    143186    {
    144187      coord[1] = c;
    145188      coord[0] = 0;
    146189    }
    147   if( (c = buttonname_to_SDLB (name)) != -1)
     190  if( (c = buttonnameToSDLB (name)) != -1)
    148191    {
    149192      coord[1] = c;
     
    158201void CommandNode::process ()
    159202{
    160   if( bLocalInput) process_local ();
    161   else process_network ();
    162 }
    163 
    164 void CommandNode::process_local ()
     203  if( this->bEnabled)
     204    {
     205      if( bLocalInput) processLocal ();
     206      else processNetwork ();
     207    }
     208}
     209
     210void CommandNode::processLocal ()
    165211{
    166212  SDL_Event event;
    167213  Command cmd;
    168  
    169214  while( SDL_PollEvent (&event))
    170215    {
     
    175220          strcpy (cmd.cmd, aliases->keys[event.key.keysym.sym]);
    176221          cmd.bUp = false;
    177           if( strlen (cmd.cmd) > 0) relay (&cmd);
     222          if( strlen (cmd.cmd) > 0) relay(&cmd);
    178223          break;
    179224        case SDL_KEYUP:
    180225          strcpy( cmd.cmd, aliases->keys[event.key.keysym.sym]);
    181226          cmd.bUp = true;
    182           if( strlen (cmd.cmd) > 0) relay (&cmd);
     227          if( strlen (cmd.cmd) > 0) relay(&cmd);
    183228          break;
    184229        case SDL_MOUSEMOTION:
     
    192237          strcpy( cmd.cmd, aliases->buttons[event.button.button]);
    193238          cmd.bUp = true;
    194           if( strlen (cmd.cmd) > 0) relay (&cmd);
     239          if( strlen (cmd.cmd) > 0) relay(&cmd);
    195240          break;
    196241        case SDL_MOUSEBUTTONDOWN:
    197242          strcpy( cmd.cmd, aliases->buttons[event.button.button]);
    198243          cmd.bUp = false;
    199           if( strlen (cmd.cmd) > 0) relay (&cmd);
     244          if( strlen (cmd.cmd) > 0) relay(&cmd);
    200245          break;
    201246        case SDL_JOYAXISMOTION:
     
    207252        default:
    208253          Orxonox *orx = Orxonox::getInstance();
    209           orx->event_handler (&event);
    210          
     254          orx->eventHandler(&event);
    211255          break;
    212256        }
     
    214258}
    215259
    216 void CommandNode::process_network ()
    217 {
    218 
    219 }
     260
     261void CommandNode::processNetwork ()
     262{
     263
     264}
     265
    220266
    221267void CommandNode::relay (Command* cmd)
    222268{
    223   //printf("CommandNode|relay()\n");
    224   List<WorldEntity>* plist = bound;
    225  
     269
    226270  Orxonox *orx = Orxonox::getInstance();
    227   if( orx->system_command (cmd)) return;
     271  if( orx->systemCommand (cmd)) return;
     272
    228273  GameLoader* gl = GameLoader::getInstance();
    229   if(gl->worldCommand(cmd)) return;
    230  
    231   if( bLocalInput) send_over_network (cmd);
    232  
    233   while( (plist = plist->get_next()) != NULL)
    234     {
    235       plist->get_object()->command (cmd);
    236     }
    237 }
     274  if( gl->worldCommand(cmd)) return;
     275
     276  if( bLocalInput) sendOverNetwork (cmd);
     277 
     278  if( this->world->command(cmd)) return;
     279
     280  WorldEntity* entity = bound->enumerate();
     281  while( entity != NULL)
     282    {
     283      entity->command (cmd);
     284      entity = bound->nextElement();
     285    }
     286}
     287
    238288
    239289/**
     
    241291   \param ID: the new ID to use
    242292*/
    243 void CommandNode::set_netID (int ID)
     293void CommandNode::setNetID (int ID)
    244294{
    245295  netID = ID;
    246296}
    247297
    248 void CommandNode::send_over_network (Command* cmd)
    249 {
    250 }
     298void CommandNode::sendOverNetwork (Command* cmd)
     299{
     300}
  • orxonox/branches/buerli/src/command_node.h

    r2190 r3238  
    66*/
    77
    8 #ifndef COMMAND_NODE_H
    9 #define COMMAND_NODE_H
     8#ifndef _COMMAND_NODE_H
     9#define _COMMAND_NODE_H
    1010
    1111#include "stdincl.h"
    1212
    1313class WorldEntity;
     14class World;
    1415
    1516#define N_STD_KEYS SDLK_LAST
     
    1920//! Key aliasing structure
    2021/**
    21         This structure contains the key aliasing information, e.g. the command strings that
    22         have been bound to the keys.
     22   This structure contains the key aliasing information, e.g. the command strings that
     23   have been bound to the keys.
    2324*/
    2425typedef struct
    2526{
    26         char keys[N_STD_KEYS][CMD_LENGHT];
    27         char buttons[N_BUTTONS][CMD_LENGHT];
     27  char keys[N_STD_KEYS][CMD_LENGHT];
     28  char buttons[N_BUTTONS][CMD_LENGHT];
    2829} KeyBindings;
    2930
    3031//! Command Node
    3132/**
    32         This class gathers all incoming SDL_Events and processes them. Keyboard, mouse and joystick input is
    33         captured and translated into command messages which are passed down to the bound WorldEntities (via WorldEntity::command()).
    34         Other SDL_Events are passed to Orxonox::event_handler() to deal with them. If the CommandNode has been created
    35         with bLocalInput set to false, it will query the network class for incoming commands that match his netID and pass
    36         them on to it's WorldEntities.
     33   This class gathers all incoming SDL_Events and processes them. Keyboard, mouse and joystick input is
     34   captured and translated into command messages which are passed down to the bound WorldEntities (via WorldEntity::command()).
     35   Other SDL_Events are passed to Orxonox::event_handler() to deal with them. If the CommandNode has been created
     36   with bLocalInput set to false, it will query the network class for incoming commands that match his netID and pass
     37   them on to it's WorldEntities.
    3738*/
    3839class CommandNode {
    3940 private:
    40         bool bLocalInput;       //!< Identifies the CommandNode that processes local input
    41         int netID;      //!< Unique identifier that is used to determine between remote CommandNodes
    42         KeyBindings* aliases;
    43         List<WorldEntity>* bound;       //!< List of WorldEntites that recieve commands from this CommandNode
    44         Sint32 coord[2];
    45        
    46         void relay (Command* cmd);
    47         int* name_to_index (char* name);
    48         void process_local ();
    49         void process_network ();
    50         void send_over_network (Command* cmd);
    51        
     41  bool bLocalInput;     //!< Identifies the CommandNode that processes local input
     42  bool bEnabled;
     43  int netID;    //!< Unique identifier that is used to determine between remote CommandNodes
     44  KeyBindings* aliases;
     45  tList<WorldEntity>* bound;    //!< List of WorldEntites that recieve commands from this CommandNode
     46  Sint32 coord[2];
     47  World* world;
     48 
     49
     50  void relay (Command* cmd);
     51  int* nameToIndex (char* name);
     52  void processLocal ();
     53  void processNetwork ();
     54  void sendOverNetwork (Command* cmd);
     55 
    5256 public:
    5357  CommandNode (int ID);
    5458  CommandNode (char* filename);
    5559  ~CommandNode ();
    56  
    57   void load_bindings (char* filename);
     60
     61  void reset ();
     62  void enable (bool bEnabled);
     63  void loadBindings (char* filename);
    5864  void bind (WorldEntity* entity);
    5965  void unbind (WorldEntity* entity);
     66  void addToWorld (World* world);
    6067  void process ();
    6168 
    62   void set_netID (int ID);
     69  void setNetID (int ID);
    6370};
    6471
    65 #endif
     72#endif /* _COMMAND_NODE_H */
  • orxonox/branches/buerli/src/console/Makefile.in

    r3237 r3238  
    193193          esac; \
    194194        done; \
    195         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/console/Makefile'; \
     195        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/console/Makefile'; \
    196196        cd $(top_srcdir) && \
    197           $(AUTOMAKE) --foreign  src/console/Makefile
     197          $(AUTOMAKE) --gnu  src/console/Makefile
    198198.PRECIOUS: Makefile
    199199Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
  • orxonox/branches/buerli/src/coordinates.h

    r2551 r3238  
    44*/
    55
    6 #ifndef COORDINATES_H
    7 #define COORDINATES_H
     6#ifndef _COORDINATES_H
     7#define _COORDINATES_H
    88
    99#include "vector.h"
     
    3434} Placement;
    3535
    36 #endif
     36#endif /* _COORDINATS_H */
  • orxonox/branches/buerli/src/data_tank.h

    r2190 r3238  
    11
    2 #ifndef DATA_TANK_H
    3 #define DATA_TANK_H
     2#ifndef _DATA_TANK_H
     3#define _DATA_TANK_H
    44
    55
     
    1212};
    1313
    14 #endif
     14#endif /* _DATA_TANK_H */
  • orxonox/branches/buerli/src/environment.cc

    r2036 r3238  
    1616*/
    1717
    18 #include <iostream>
    19 #include <GL/glut.h>
    20 #include <stdlib.h>
    21 
    22 #include "data_tank.h"
    2318
    2419#include "environment.h"
     20#include "stdincl.h"
     21#include "world_entity.h"
     22#include "vector.h"
    2523
    2624using namespace std;
     
    3028#define LEVEL_LENGTH 500
    3129
    32 Environment::Environment ()
    33   : WorldEntity()
     30Environment::Environment () : WorldEntity()
    3431{
    3532
     
    6057Environment::~Environment () {}
    6158
     59void Environment::tick (float time) {}
    6260
     61void Environment::hit (WorldEntity* weapon, Vector loc) {}
     62
     63void Environment::destroy () {}
     64
     65void Environment::collide (WorldEntity* other,  Uint32 ownhitflags, Uint32 otherhitflags) {}
     66
     67void Environment::draw ()
     68{
     69  glMatrixMode(GL_MODELVIEW);
     70  glLoadIdentity();
     71  float matrix[4][4];
     72 
     73  glTranslatef(getPlacement()->r.x,getPlacement()->r.y,getPlacement()->r.z);
     74  getPlacement()->w.matrix (matrix);
     75  glMultMatrixf ((float*)matrix);
     76
     77  glBegin(GL_TRIANGLES);
     78  glColor3f(1,0,1);
     79  glVertex3f(0,0,0.5);
     80  glVertex3f(-0.5,0,-1);
     81  glVertex3f(0.5,0,-1);
     82 
     83  glVertex3f(0,0,0.5);
     84  glVertex3f(0,0.5,-1);
     85  glVertex3f(0,-0.5,-1);
     86  glEnd();
     87   
     88  glBegin(GL_QUADS);
     89  glColor3f(1,0,1);
     90  glVertex3f(0.5,0.5,-1);
     91  glVertex3f(0.5,-0.5,-1);
     92  glVertex3f(-0.5,-0.5,-1);
     93  glVertex3f(-0.5,0.5,-1);
     94  glEnd();
     95}
     96
     97/*
    6398void Environment::paint()
    6499{
    65   /*
     100 
    66101  glPushMatrix();
    67102  //glScalef(0.5, 0.5, 1.0);
     
    95130 
    96131  glPopMatrix();
    97   */
     132 
    98133}
    99134
     
    103138}
    104139
     140*/
  • orxonox/branches/buerli/src/environment.h

    r2036 r3238  
    1 
    2 
    3 
    4 #ifndef ENVIRONEMENT_H
    5 #define ENVIRONEMENT_H
    6 
     1#ifndef _ENVIRONEMENT_H
     2#define _ENVIRONEMENT_H
    73
    84#include "world_entity.h"
    95
    10 class Environment : public WorldEntity {
     6
     7class Environment : public WorldEntity
     8{
     9  friend class World;
    1110
    1211 private:
     
    2120  ~Environment ();
    2221
    23   void paint(void);
    24   void drawEnvironment(void);
    25   void setEnvPosition(void);
    26   void getEnvPosition(void);
     22 
     23  virtual void tick (float time);
     24  virtual void hit (WorldEntity* weapon, Vector loc);
     25  virtual void destroy ();
     26  virtual void collide (WorldEntity* other,  Uint32 ownhitflags, Uint32 otherhitflags);
     27  virtual void draw ();
    2728
    2829};
    2930
    30 #endif
     31#endif /* _ENVIRONEMENT_H */
  • orxonox/branches/buerli/src/error.h

    r2707 r3238  
    2222*/
    2323
    24 // this are the two undefined error nr. Don't use them ...
    25 #define ERROR -1
    26 #define NERROR 0
     24
     25#ifndef _ERROR_H
     26#define _ERROR_H
     27
     28// these are the two undefined error nr. Don't use them ...
     29#define oERROR -1
     30
     31#define oNOERROR 0
    2732
    2833/*!
     
    5459  char* message;
    5560  char* location;
    56 } Error;
     61} ErrorMessage;
     62
     63#endif /* _ERROR_H */
  • orxonox/branches/buerli/src/game_loader.cc

    r2707 r3238  
    4242
    4343
     44/**
     45   \brief this class is a singleton class
     46   \returns an instance of itself
     47
     48   if you are unsure about singleton classes, check the theory out on the internet :)
     49*/
    4450GameLoader* GameLoader::getInstance()
    4551{
     
    5056
    5157
    52 Error GameLoader::init()
     58ErrorMessage GameLoader::init()
    5359{
    5460  if(this->currentCampaign != NULL)
     
    5763
    5864
    59 Error GameLoader::loadCampaign(char* name)
    60 {
    61   Error errorCode;
     65/**
     66   \brief reads a campaign definition file into a campaign class
     67   \param filename to be loaded
     68   \returns the loaded campaign
     69
     70   this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
     71*/
     72ErrorMessage GameLoader::loadCampaign(char* name)
     73{
     74  ErrorMessage errorCode;
    6275 
    6376  this->currentCampaign = this->fileToCampaign(name);
    6477}
    6578
    66 Error GameLoader::loadDebugCampaign(Uint32 campaignID)
     79
     80/**
     81   \brief loads a debug campaign for test purposes only.
     82   \param the identifier of the campaign.
     83   \returns error message if not able to do so.
     84*/
     85ErrorMessage GameLoader::loadDebugCampaign(Uint32 campaignID)
    6786{
    6887  switch(campaignID)
     
    7291      {
    7392        Campaign* debugCampaign = new Campaign();
     93
    7494        World* world0 = new World(DEBUG_WORLD_0);
    75         world0->setNextStoryID(DEBUG_WORLD_1);
     95        world0->setNextStoryID(WORLD_ID_1);
    7696        debugCampaign->addEntity(world0, WORLD_ID_0);
     97
    7798        World* world1 = new World(DEBUG_WORLD_1);
    7899        world1->setNextStoryID(WORLD_ID_GAMEEND);
     
    85106}
    86107
    87 Error GameLoader::start()
     108ErrorMessage GameLoader::start()
    88109{
    89110  if(this->currentCampaign != NULL)
     
    92113
    93114
    94 Error GameLoader::stop()
     115ErrorMessage GameLoader::stop()
    95116{
    96117  if(this->currentCampaign != NULL)
     
    100121
    101122
    102 Error GameLoader::pause()
     123ErrorMessage GameLoader::pause()
    103124{
    104125  this->isPaused = true;
     
    108129
    109130
    110 Error GameLoader::resume()
     131ErrorMessage GameLoader::resume()
    111132{
    112133  this->isPaused = false;
     
    115136}
    116137
    117 Error GameLoader::free()
     138/**
     139   \brief release the mem
     140 */
     141ErrorMessage GameLoader::destroy()
    118142{}
    119143
    120144
    121 
    122 
    123 
     145/**
     146   \brief reads a campaign definition file into a campaign class
     147   \param filename to be loaded
     148   \returns the loaded campaign
     149
     150   this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
     151*/
    124152Campaign* GameLoader::fileToCampaign(char *name)
    125153{
     
    134162   \brief handle keyboard commands
    135163   \param cmd: the command to handle
    136    \return true if the command was handled by the system
     164   \returns true if the command was handled by the system
    137165*/
    138166bool GameLoader::worldCommand (Command* cmd)
     
    165193      return true;
    166194    }
     195  else if( !strcmp( cmd->cmd, "quit"))
     196    {
     197      if( !cmd->bUp) this->stop();
     198      return true;
     199    }
    167200  return false;
    168201}
    169202
     203
     204/*
     205  \brief this changes to the next level
     206*/
    170207void GameLoader::nextLevel()
    171208{
     
    174211}
    175212
     213
     214/*
     215  \brief change to the previous level - not implemented
     216
     217  this propably useless
     218*/
    176219void GameLoader::previousLevel()
    177220{
  • orxonox/branches/buerli/src/game_loader.h

    r2707 r3238  
    1 #ifndef GAME_LOADER_H
    2 #define GAME_LOADER_H
     1#ifndef _GAME_LOADER_H
     2#define _GAME_LOADER_H
    33
    44#include "stdincl.h"
     
    2020  static GameLoader* getInstance();
    2121
    22   Error init();
    23   Error loadCampaign(char* name);
    24   Error start();
    25   Error stop();
    26   Error pause();
    27   Error resume();
    28   Error free();
     22  ErrorMessage init();
     23  ErrorMessage loadCampaign(char* name);
     24  ErrorMessage start();
     25  ErrorMessage stop();
     26  ErrorMessage pause();
     27  ErrorMessage resume();
     28  ErrorMessage destroy();
    2929
    3030  void nextLevel();
     
    3232
    3333  bool worldCommand(Command* cmd);
    34   Error loadDebugCampaign(Uint32 campaignID);
     34  ErrorMessage loadDebugCampaign(Uint32 campaignID);
    3535 
    3636 private:
     
    4747};
    4848
    49 #endif
     49#endif /* _GAME_LOADER_H */
  • orxonox/branches/buerli/src/gui/Makefile.in

    r3237 r3238  
    220220          esac; \
    221221        done; \
    222         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/gui/Makefile'; \
     222        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/gui/Makefile'; \
    223223        cd $(top_srcdir) && \
    224           $(AUTOMAKE) --foreign  src/gui/Makefile
     224          $(AUTOMAKE) --gnu  src/gui/Makefile
    225225.PRECIOUS: Makefile
    226226Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
  • orxonox/branches/buerli/src/importer/Makefile.in

    r3237 r3238  
    200200          esac; \
    201201        done; \
    202         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/importer/Makefile'; \
     202        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/importer/Makefile'; \
    203203        cd $(top_srcdir) && \
    204           $(AUTOMAKE) --foreign  src/importer/Makefile
     204          $(AUTOMAKE) --gnu  src/importer/Makefile
    205205.PRECIOUS: Makefile
    206206Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
  • orxonox/branches/buerli/src/ini_parser.cc

    r2551 r3238  
    2525IniParser::IniParser (char* filename)
    2626{
    27         stream = NULL;
    28         bInSection = false;
    29         open_file (filename);
     27  stream = NULL;
     28  bInSection = false;
     29  openFile(filename);
    3030}
    3131
     
    3535IniParser::~IniParser ()
    3636{
    37         if( stream != NULL) fclose (stream);
     37  if( stream != NULL) fclose (stream);
    3838}
    3939
    4040/**
    41         \brief opens another file to parse
    42         \param filename: path and name of the new file to parse
    43         \return zero on success or -1 if an error occured;
     41   \brief opens another file to parse
     42   \param filename: path and name of the new file to parse
     43   \return zero on success or -1 if an error occured;
    4444*/
    45 int IniParser::open_file( char* filename)
     45int IniParser::openFile( char* filename)
    4646{
    47         if( filename == NULL) return -1;
    48         if( stream != NULL)     fclose (stream);
    49         if( (stream = fopen (filename, "r")) == NULL)
    50         {
    51                 printf("IniParser could not open %s\n", filename);
    52                 return -1;
    53         }
    54         bInSection = false;
    55         return 0;
     47  if( filename == NULL) return -1;
     48  if( stream != NULL)   fclose (stream);
     49  if( (stream = fopen (filename, "r")) == NULL)
     50    {
     51      printf("IniParser could not open %s\n", filename);
     52      return -1;
     53    }
     54  bInSection = false;
     55  return 0;
    5656}
    5757
    5858/**
    59         \brief set the parsing cursor to the specified section
    60         \param section: the name of the section to set the cursor to
    61         \return zero on success or -1 if the section could not be found
     59   \brief set the parsing cursor to the specified section
     60   \param section: the name of the section to set the cursor to
     61   \return zero on success or -1 if the section could not be found
    6262*/
    63 int IniParser::get_section( char* section)
     63int IniParser::getSection( char* section)
    6464{
    6565  bInSection = false;
     
    9595
    9696/**
    97         \brief gets the next VarName=VarValue pair from the parsing stream
    98         \param name: a pointer to a buffer to store the name of the entry
    99         \param value: a pointer to a buffer to store the value of the entry
    100         \return zero if the buffers have been filled with data or -1 if there are no entries left in the current section
     97   \brief gets the next VarName=VarValue pair from the parsing stream
     98   \param name: a pointer to a buffer to store the name of the entry
     99   \param value: a pointer to a buffer to store the value of the entry
     100   \return zero if the buffers have been filled with data or -1 if there are no entries left in the current section
    101101*/
    102 int IniParser::next_var( char* name, char* value)
     102int IniParser::nextVar( char* name, char* value)
    103103{
    104         if( stream == NULL)
     104  if( stream == NULL)
     105    {
     106      bInSection = false;
     107      return -1;
     108    }
     109  if( !bInSection) return -1;
     110 
     111  char linebuffer[PARSELINELENGHT];
     112  char* ptr;
     113 
     114  while( !feof( stream))
     115    {
     116      // get next line
     117      fgets (linebuffer, PARSELINELENGHT, stream);
     118      // remove newline char
     119      if( (ptr = strchr( linebuffer, '\n')) != NULL) *ptr = 0;
     120      if( linebuffer[0] == '[')
    105121        {
    106                 bInSection = false;
    107                 return -1;
     122          bInSection = false;
     123          return -1;
    108124        }
    109         if( !bInSection) return -1;
    110        
    111         char linebuffer[PARSELINELENGHT];
    112         char* ptr;
    113 
    114         while( !feof( stream))
     125      if( (ptr = strchr( linebuffer, '=')) != NULL)
    115126        {
    116                         // get next line
    117                 fgets (linebuffer, PARSELINELENGHT, stream);
    118                         // remove newline char
    119                 if( (ptr = strchr( linebuffer, '\n')) != NULL) *ptr = 0;
    120                 if( linebuffer[0] == '[')
    121                 {
    122                         bInSection = false;
    123                         return -1;
    124                 }
    125                 if( (ptr = strchr( linebuffer, '=')) != NULL)
    126                 {
    127                         if( ptr == linebuffer) continue;
    128                         strcpy (value, &ptr[1]);
    129                         strncpy (name, linebuffer, strlen (linebuffer) - strlen (value) - 1);
    130                         return 0;
    131                 }
     127          if( ptr == linebuffer) continue;
     128          strcpy (value, &ptr[1]);
     129          strncpy (name, linebuffer, strlen (linebuffer) - strlen (value) - 1);
     130          return 0;
    132131        }
    133         return -1;     
     132    }
     133  return -1;   
    134134}
    135135
    136136/**
    137         \brief directly acesses an entry in a section
    138         \param name: the name of the entry to find
    139         \param section: the section where the entry is to be found
    140         \param defvalue: what should be returned in case the entry cannot be found
    141         \return a pointer to a buffer conatining the value of the specified entry. This buffer will contain the data specified in defvalue in case the entry wasn't found
    142 
    143         The returned pointer points to an internal buffer, so do not free it on your own. Do not give a NULL pointer to defvalue, this will certainly
    144         lead to unwanted behaviour.
     137   \brief directly acesses an entry in a section
     138   \param name: the name of the entry to find
     139   \param section: the section where the entry is to be found
     140   \param defvalue: what should be returned in case the entry cannot be found
     141   \return a pointer to a buffer conatining the value of the specified entry. This buffer will contain the data specified in defvalue in case the entry wasn't found
     142   
     143   The returned pointer points to an internal buffer, so do not free it on your own. Do not give a NULL pointer to defvalue, this will certainly
     144   lead to unwanted behaviour.
    145145*/
    146 char* IniParser::get_var( char* name, char* section, char* defvalue = "")
     146char* IniParser::getVar( char* name, char* section, char* defvalue = "")
    147147{
    148         strcpy (internbuf, defvalue);
    149         if( get_section (section) == -1) return internbuf;
    150        
    151         char namebuf[PARSELINELENGHT];
    152         char valuebuf[PARSELINELENGHT];
    153        
    154         while( next_var (namebuf, valuebuf) != -1)
     148  strcpy (internbuf, defvalue);
     149  if( getSection (section) == -1) return internbuf;
     150 
     151  char namebuf[PARSELINELENGHT];
     152  char valuebuf[PARSELINELENGHT];
     153 
     154  while( nextVar (namebuf, valuebuf) != -1)
     155    {
     156      if( !strcmp (name, namebuf))
    155157        {
    156                 if( !strcmp (name, namebuf))
    157                 {
    158                         strcpy (internbuf, valuebuf);
    159                         return internbuf;
    160                 }
     158          strcpy (internbuf, valuebuf);
     159          return internbuf;
    161160        }
    162         return internbuf;
     161    }
     162  return internbuf;
    163163}
  • orxonox/branches/buerli/src/ini_parser.h

    r2190 r3238  
    66*/
    77
    8 #ifndef INI_PARSER_H
    9 #define INI_PARSER_H
     8#ifndef _INI_PARSER_H
     9#define _INI_PARSER_H
    1010
    1111#include <stdio.h>
     
    2929  ~IniParser ();
    3030 
    31   char* get_var( char* name, char* section, char* defvalue);
    32         int open_file( char* name);
    33   int get_section( char* section);
    34   int next_var( char* name, char* value);
     31  char* getVar( char* name, char* section, char* defvalue);
     32        int openFile( char* name);
     33  int getSection( char* section);
     34  int nextVar( char* name, char* value);
    3535};
    3636
    37 #endif
     37#endif /* _INI_PARSER_H */
  • orxonox/branches/buerli/src/keynames.cc

    r2551 r3238  
    1313   co-programmer: ...
    1414*/
    15 #include <SDL/SDL.h>
    1615
    1716#include "keynames.h"
     
    2120using namespace std;
    2221
    23 int buttonname_to_SDLB( char* name)
     22int buttonnameToSDLB( char* name)
    2423{
    2524        if( !strcmp (name, "BUTTON_LEFT")) return SDL_BUTTON_LEFT;
     
    3130}
    3231
    33 char* SDLB_to_buttonname( int button)
     32char* SDLBToButtonname( int button)
    3433{
    3534        if( button == SDL_BUTTON_LEFT) return "BUTTON_LEFT";
     
    4140}
    4241
    43 int keyname_to_SDLK( char* name)
     42int keynameToSDLK( char* name)
    4443{
    4544        if( !strcmp (name, "BACKSPACE")) return SDLK_BACKSPACE;
     
    179178}
    180179
    181 char* SDLK_to_keyname( int key)
     180char* SDLKToKeyname( int key)
    182181{
    183182        if( key == SDLK_BACKSPACE) return "BACKSPACE";
  • orxonox/branches/buerli/src/keynames.h

    r2551 r3238  
    55                Converts strings to SDLK/SDL_BUTTON values and vice versa
    66*/
     7#ifndef _KEYNAMES_H
     8#define _KEYNAMES_H
     9
    710
    811#ifdef __WIN32__
     
    1013#endif
    1114
     15#ifndef __APPLE__
    1216#include <SDL/SDL.h>
     17#else
     18#include <SDL.h>
     19#endif
    1320
    1421/**
     
    1724        \return an int containing the SDL identifier of the mouse button or -1 if the button name is not valid
    1825*/
    19 int buttonname_to_SDLB( char* name);
     26int buttonnameToSDLB( char* name);
    2027
    2128/**
     
    2431        \return a pointer to a string containing the name of the mouse button
    2532*/
    26 char* SDLB_to_buttonname( int button);
     33char* SDLBToButtonname( int button);
    2734
    2835/**
     
    3138        \return the SDLK sym of the named key or -1 if the key name is not valid
    3239*/
    33 int keyname_to_SDLK( char* name);
     40int keynameToSDLK( char* name);
    3441
    3542/**
     
    3845        \return a pointer to a string containig the name of the key
    3946*/
    40 char* SDLK_to_keyname( int key);
     47char* SDLKToKeyname( int key);
    4148
     49
     50#endif /* _KEYNAMES_H */
  • orxonox/branches/buerli/src/list.h

    r2707 r3238  
    1 /*
    2    orxonox - the future of 3D-vertical-scrollers
    3 
    4    Copyright (C) 2004 orx
    5 
    6    This program is free software; you can redistribute it and/or modify
    7    it under the terms of the GNU General Public License as published by
    8    the Free Software Foundation; either version 2, or (at your option)
    9    any later version.
    10 
    11    ### File Specific:
    12    main-programmer: Christian Meyer
    13 
    14    ADDONS/FIXES:
    15  
    16    Patrick Boenzli     :          Implemented getSize() function
    17 */
    18 
    19 
    20 /*!
    21   \file list.h
    22   \brief Contains a template for a doubly linked list
    23 */
    24 
    25 #ifndef LIST_H
    26 #define LIST_H
    27 
    28 #include "stdlib.h"
     1
     2#ifndef _LIST_H
     3#define _LIST_H
     4
     5#include "stdincl.h"
    296
    307//! An enum to list all the modes available when adding an object to a List
    31 enum ADDMODE {LIST_ADD_NEXT, LIST_ADD_PREV, LIST_ADD_FIRST, LIST_ADD_LAST};
     8//enum ADDMODE {LIST_ADD_FIRST, LIST_ADD_LAST};
    329//! An enum to list the two searching directions available when removing an object from a List
    33 enum FINDMODE {LIST_FIND_BW, LIST_FIND_FW};
    34 
    35 //! A generic doubly linked list
    36 template<class T> class List
    37 {
    38   T* object;
    39   List<T>* next;
    40   List<T>* prev;
    41   bool bReference;
    42   int size;
     10//enum FINDMODE {LIST_FIND_BW, LIST_FIND_FW};
     11
     12
     13
     14class WorldEntity;
     15
     16class List {
     17
     18 public:
     19  List ();
     20  ~List ();
     21
     22  void add(WorldEntity* entity);
     23  void remove(WorldEntity* entity);
     24  void destroy();
     25  WorldEntity* firstElement();
     26  bool isEmpty();
     27  int getSize();
     28  WorldEntity* enumerate();
     29  WorldEntity* nextElement();
     30  WorldEntity* toArray();
     31  void debug();
     32
     33 private:
     34  struct listElement
     35  {
     36    listElement* prev;
     37    WorldEntity* curr;
     38    listElement* next;
     39  };
     40  Uint32 size;
     41  listElement* first;
     42  listElement* last;
     43  listElement* currentEl;
     44
     45
     46};
     47
     48class Iterator
     49{
     50
     51 public:
     52  bool hasNext();
     53  WorldEntity* next();
     54
     55 private:
     56
     57};
     58
     59
     60template<class T> class tList
     61{
     62 private:
     63  struct listElement
     64  {
     65    listElement* prev;
     66    T* curr;
     67    listElement* next;
     68  };
     69
     70  Uint32 size;
     71  listElement* first;
     72  listElement* last;
     73  listElement* currentEl;
    4374 
    4475 public:
    45   List (T* obj, List<T>* n, List<T>* p, bool bRef);
    46   ~List ();
     76  tList ();
     77  ~tList ();
    4778 
    48   int add (T* obj, ADDMODE mode, bool bRef);
    49   T* get_object();
    50   List<T>* get_next ();
    51   List<T>* get_previous ();
    52   List<T>* get_last ();
    53   List<T>* get_first ();
    54   void set_next (List<T>* ptr);
    55   void set_prev (List<T>* ptr);
    56   int remove (T* obj, FINDMODE mode);
     79
     80  void add(WorldEntity* entity);
     81  void remove(WorldEntity* entity);
     82  void destroy();
     83  T* firstElement();
     84  bool isEmpty();
    5785  int getSize();
     86  T* enumerate();
     87  T* nextElement();
     88  T* toArray();
     89  void debug();
    5890};
    5991
    6092
    61 /**
    62   \brief Standard constructor
    63  
    64   Call this without any parameters to generate a new List which can be filled with content.
    65   DO NOT create a List element that contains an object on your own, you'll lose the data
    66   contained in that object and will have trouble removing the list from your memory.
    67 */
    68 template<class T>
    69 List<T>::List (T* obj = NULL, List<T>* n = NULL, List<T>* p = NULL, bool bRef = false)
    70 {
    71   object = obj;
    72   next = n;
    73   prev = p;
    74   bReference = bRef;
    75   if(obj != NULL)
    76     ++size;
    77 }
    78 
    79 /**
    80   \brief Standard destructor
    81  
    82   Call this on the initially generated base List element to remove the whole List from the memory.
    83   You can safely do this to any List element you want without messing up the rest of the List, but keep in mind
    84   that the contained object will be deleted as well when bRef had been set to false.
    85 */
    86 template<class T>
    87 List<T>::~List ()
    88 {
    89   if (object == NULL) // deleted foot node => disband the list
    90   {
    91     while( next != NULL)
     93template<class T>
     94tList<T>::tList ()
     95{
     96  this->first = NULL;
     97  this->last = NULL;
     98  this->size = 0;
     99}
     100
     101template<class T>
     102tList<T>::~tList ()
     103{}
     104
     105template<class T>
     106void tList<T>::add(WorldEntity* entity)
     107{
     108  listElement* el = new listElement;
     109  el->prev = this->last;
     110  el->curr = entity;
     111  el->next = NULL;
     112
     113  this->last = el;
     114
     115  if(this->size == 0) this->first = el;
     116  else el->prev->next = el;
     117  this->size++;
     118}
     119
     120
     121template<class T>
     122void tList<T>::remove(WorldEntity* entity)
     123{
     124  this->currentEl = this->first;
     125  listElement* te;
     126  while( this->currentEl != NULL)
    92127    {
    93       delete next;
     128      if( this->currentEl->curr == entity)
     129        {
     130          if( this->currentEl->prev  == NULL ) this->first = this->currentEl->next;
     131          else this->currentEl->prev->next = this->currentEl->next;
     132
     133          if( this->currentEl->next == NULL) this->last = this->currentEl->prev;
     134          else this->currentEl->next->prev = this->currentEl->prev;
     135
     136          te = this->currentEl->next;
     137          delete this->currentEl;
     138          this->currentEl = te;
     139          return;
     140        }
     141      this->currentEl = this->currentEl->next;
    94142    }
    95     while( prev != NULL)
     143}
     144
     145
     146template<class T>
     147void tList<T>::destroy()
     148{
     149  this->currentEl = this->first;
     150  while(this->currentEl != NULL)
    96151    {
    97       delete prev;
     152      listElement* le = this->currentEl->next;
     153      delete this->currentEl->curr;
     154      delete this->currentEl;
     155      this->currentEl = le;
    98156    }
    99   }
    100   else
    101   {
    102     if (prev != NULL) prev->set_next (next);
    103     if (next != NULL) next->set_prev (prev);
    104     if (!bReference) delete object;
    105   }
    106 }
    107  
    108 /**
    109   \brief Add an object to the List
    110   \param obj: A pointer to an allocated object
    111   \param mode: A Value of ADDMODE (default: LIST_ADD_NEXT)
    112   \param bRef: Sets whether the element is serving as a storage point or a simple listing (default: false)
    113   \return 0 if the operation succeded, -1 if the element could not be added
    114  
    115   This adds a new List element to the chain. The mode parameter can be used to specify
    116   the location where the element should be added. LIST_ADD_NEXT will add the new element directly
    117   after the base element. LIST_ADD_PREV will add the new element directly before the base element.
    118   LIST_ADD_FIRST will add the element at the beginning of the List whereas LIST_ADD_LAST will add
    119   it to the end of the chain. If the bRef parameter is set to true, the object pointer will not be deleted
    120   when the element containing that object is deleted, thus the List can be used for temporary listings as
    121   well as permanent data storage.
    122 */
    123 template<class T>
    124 int List<T>::add (T* obj, ADDMODE mode = LIST_ADD_NEXT, bool bRef = false)
    125 {
    126   List<T>* p;
    127   if( obj == NULL) return -1;
    128   switch (mode)
    129   {
    130     case LIST_ADD_NEXT:
    131       p = new List<T>( obj, next, this, bRef);
    132       if( next != NULL) next->set_prev (p);
    133       next = p;
    134       break;
    135     case LIST_ADD_PREV:
    136       p = new List<T>( obj, this, prev, bRef);
    137       if( prev != NULL) prev->set_next (p);
    138       prev = p;
    139       break;
    140     case LIST_ADD_FIRST:
    141       if (prev == NULL) prev = new List<T> (obj, this, NULL, bRef);
    142       else return prev->add (obj, mode, bRef);
    143       break;
    144     case LIST_ADD_LAST:
    145       if (next == NULL) next = new List<T> (obj, NULL, this, bRef);
    146       else return next->add (obj, mode, bRef);
    147       break;
    148     default:
    149         return -1;
    150       break;
    151   }
    152   ++size;
    153   return 0;
    154 }
    155 
    156 /**
    157   \brief Get the next element of the List
    158   \return The List element after the current List element
    159 */
    160 template<class T>
    161 List<T>* List<T>::get_next ()
    162 {
    163   return next;
    164 }
    165  
    166 /**
    167   \brief Get the previous element of the List
    168   \return The List element before the current List element
    169 */
    170 template<class T>
    171 List<T>* List<T>::get_previous ()
    172 {
    173   return prev;
    174 }
    175 
    176 /**
    177   \brief Get the last element of the List
    178   \return The last List element
    179 */
    180 template<class T>
    181 List<T>* List<T>::get_last ()
    182 {
    183   if (next == NULL) return this;
    184   else return next->get_last();
    185 }
    186 
    187 /**
    188   \brief Get the first element of the List
    189   \return The first List element
    190 */
    191 template<class T>
    192 List<T>* List<T>::get_first ()
    193 {
    194   if (prev == NULL) return this;
    195   else return prev->get_first();
    196 }
    197 
    198 /**
    199   \brief Removes a certain element from the List
    200   \param obj: A pointer to the object that should be removed
    201   \param mode: A value of FINDMODE
    202   \return 0 if the element was found and removed, -1 if the element was not found
    203  
    204   This searches the part of the List specified with mode for the object in question.
    205   When the object is found it is deleted and the List element is removed from the chain.
    206   If mode is LIST_FIND_FW all elements AFTER the base element are searched, if mode is
    207   LIST_FIND_BW all elements BEFORE the base element are searched. Note that the object
    208   contained within the List element is NOT deleted when bRef was set to true.
    209 */
    210 template<class T>
    211 int List<T>::remove (T* obj, FINDMODE mode = LIST_FIND_FW)
    212 {
    213   if (obj == NULL) return -1;
    214   else
    215   {
    216     switch (mode)
    217     {
    218       case LIST_FIND_BW:
    219         if (prev == NULL) return -1;
    220         else
    221         {
    222           if( prev->get_object() == obj)
    223           {
    224             delete prev;
    225           }
    226           else
    227           {
    228             return prev->remove( obj, mode);
    229           }
    230         }
    231         break;
    232       case LIST_FIND_FW:
    233         if (next == NULL) return -1;
    234         else
    235         {
    236           if( next->get_object() == obj)
    237           {
    238             delete next;
    239           }
    240           else
    241           {
    242             return next->remove( obj, mode);
    243           }
    244         }
    245         break;
    246       default:
    247         return -1;
    248     }
    249   }
    250   --size;
    251   return 0;
    252 }
    253 
    254 /**
    255   \brief Set the next element of a List element
    256   \param ptr: A pointer to the new next element
    257    
    258   Sets the next element of a List element... Better not touch this, it can really mess up a List.
    259 */
    260 template<class T>
    261 void List<T>::set_next (List<T>* ptr)
    262 {
    263   next = ptr;
    264 }
    265 
    266 /**
    267   \brief Set the prev element of a List element
    268   \param ptr: A pointer to the new previous element
    269    
    270   Sets the previous element of a List element... Better not touch this, it can really mess up a List.
    271 */
    272 template<class T>
    273 void List<T>::set_prev (List<T>* ptr)
    274 {
    275   prev = ptr;
    276 }
    277 
    278 /**
    279   \brief Get the pointer to the object the element is containing
    280   \return The contained object (will be NULL if called on the base element).
    281 */
    282 template<class T>
    283 T* List<T>::get_object()
    284 {
    285   return object;
    286 }
    287 
    288 
    289 /**
    290   \brief Returns the current size of the List
    291   \return Size of List
    292 */
    293 template<class T>
    294 int List<T>::getSize()
     157  this->first = NULL;
     158  this->last = NULL;
     159  this->size = 0;
     160}
     161
     162
     163template<class T>
     164T* tList<T>::firstElement()
     165{
     166  return this->first->curr;
     167}
     168
     169
     170template<class T>
     171bool tList<T>::isEmpty()
     172{
     173  return (this->size==0)?true:false;
     174}
     175
     176
     177template<class T>
     178int tList<T>::getSize()
    295179{
    296180  return this->size;
    297181}
    298182
    299 #endif
    300 
     183
     184template<class T>
     185T* tList<T>::enumerate()
     186{
     187  if(this->size == 0) return NULL;
     188  this->currentEl = this->first;
     189  return this->currentEl->curr;
     190}
     191
     192
     193template<class T>
     194T* tList<T>::nextElement()
     195{
     196  if(this->size == 0) return NULL;
     197  this->currentEl = this->currentEl->next;
     198  if(this->currentEl == NULL) return NULL;
     199  return this->currentEl->curr;
     200}
     201
     202
     203template<class T>
     204T* tList<T>::toArray()
     205{}
     206
     207#endif /* _LIST_H */
  • orxonox/branches/buerli/src/message_structures.h

    r2551 r3238  
    44*/
    55
    6 #ifndef _MESSAGESTRUCTURES_H
    7 #define _MESSAGESTRUCTURES_H
     6#ifndef _MESSAGE_STRUCTURES_H
     7#define _MESSAGE_STRUCTURES_H
    88
    99#define CMD_LENGHT 16
     
    2626} Command;
    2727
    28 #endif
     28#endif /* _MESSAGE_STRUCTURES_H */
  • orxonox/branches/buerli/src/npc.h

    r2036 r3238  
    11
    2 #ifndef NPC_H
    3 #define NPC_H
     2#ifndef _NPC_H
     3#define _NPC_H
    44
    55#include "world_entity.h"
     
    4141};
    4242
    43 #endif
     43#endif /* _NPC_H */
  • orxonox/branches/buerli/src/orxonox.cc

    r2707 r3238  
    4747Orxonox::~Orxonox ()
    4848{
    49   Orxonox::singleton_ref = NULL;
     49  Orxonox::singletonRef = NULL;
    5050  if( world != NULL) delete world;
    5151  if( localinput != NULL) delete world;
     
    5656
    5757/* this is a singleton class to prevent duplicates */
    58 Orxonox* Orxonox::singleton_ref = 0;
     58Orxonox* Orxonox::singletonRef = 0;
    5959
    6060Orxonox* Orxonox::getInstance (void)
    6161{
    62   if (singleton_ref == NULL)
    63     singleton_ref = new Orxonox();
    64   return singleton_ref;
     62  if (singletonRef == NULL)
     63    singletonRef = new Orxonox();
     64  return singletonRef;
    6565}
    6666
     
    7272   it's path and name into configfilename
    7373*/
    74 void Orxonox::get_config_file (int argc, char** argv)
    75 {
    76   /*    char* path;
    77     #ifdef __WIN32__
    78     path = getenv("");
    79     #else
    80     path = getenv("HOME");
    81     #endif
    82    
    83     if( path != NULL) strcpy (configfilename, path);
    84     else strcpy (configfilename, "./");
    85     strcat (configfilename, "/.orxonox.conf");*/
    86  
     74void Orxonox::getConfigFile (int argc, char** argv)
     75{
    8776  strcpy (configfilename, "orxonox.conf");
    8877}
     
    9685  // config file
    9786 
    98   get_config_file (argc, argv);
    99  
    100   // initialize SDL
    101   printf("> Initializing SDL\n");
    102   if( SDL_Init (SDL_INIT_EVERYTHING) == -1)
     87  getConfigFile (argc, argv);
     88  SDL_Init (SDL_INIT_TIMER);
     89  // initialize everything
     90  if( initVideo() == -1) return -1;
     91  if( initSound() == -1) return -1;
     92  printf("> Initializing input\n");
     93  if( initInput() == -1) return -1;
     94  printf("> Initializing networking\n");
     95  if( initNetworking () == -1) return -1;
     96  printf("> Initializing resources\n");
     97  if( initResources () == -1) return -1;
     98  //printf("> Initializing world\n");
     99  //if( init_world () == -1) return -1; PB: world will be initialized when started
     100 
     101  return 0;
     102}
     103
     104/**
     105   \brief initializes SDL and OpenGL
     106*/
     107int Orxonox::initVideo()
     108{
     109  printf("> Initializing video\n");
     110  if (SDL_Init(SDL_INIT_VIDEO) == -1)
    103111    {
    104       printf ("Could not SDL_Init(): %s\n", SDL_GetError());
     112      printf ("could not initialize SDL Video\n");
    105113      return -1;
    106114    }
    107  
    108   // initialize everything
    109   printf("> Initializing video\n");
    110   if( init_video () == -1) return -1;
    111   printf("> Initializing sound\n");
    112   if( init_sound () == -1) return -1;
    113   printf("> Initializing input\n");
    114   if( init_input () == -1) return -1;
    115   printf("> Initializing networking\n");
    116   if( init_networking () == -1) return -1;
    117   printf("> Initializing resources\n");
    118   if( init_resources () == -1) return -1;
    119   //printf("> Initializing world\n");
    120   //if( init_world () == -1) return -1; PB: world will be initialized when started
    121  
    122   return 0;
    123 }
    124 
    125 /**
    126    \brief initializes SDL and OpenGL
    127 */
    128 int Orxonox::init_video ()
    129 {
    130115  // Set video mode
    131116  // TO DO: parse arguments for settings
    132   SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 5);
    133   SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 5);
    134   SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5);
    135   SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 16);
     117  SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
     118  SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
     119  SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
     120  SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
    136121 
    137122  int bpp = 16;
     
    140125  Uint32 flags = SDL_HWSURFACE | SDL_OPENGL | SDL_GL_DOUBLEBUFFER;
    141126 
    142   if( (screen = SDL_SetVideoMode (width, height, bpp, flags)) == NULL)
     127  if((screen = SDL_SetVideoMode (width, height, bpp, flags)) == NULL)
    143128  {
    144     printf ("Could not SDL_SetVideoMode(%d, %d, %d, %d): %s\n", width, height, bpp, flags, SDL_GetError());
     129    printf("Could not SDL_SetVideoMode(%d, %d, %d, %d): %s\n", width, height, bpp, flags, SDL_GetError());
    145130    SDL_Quit();
    146131    return -1;
     
    148133 
    149134  // Set window labeling
    150   // TO DO: Add version information to caption
    151   SDL_WM_SetCaption( "Orxonox", "Orxonox");
     135  SDL_WM_SetCaption("Orxonox " PACKAGE_VERSION, "Orxonox " PACKAGE_VERSION);
    152136 
    153137  // TO DO: Create a cool icon and use it here
     
    158142  glClearColor(0.0, 0.0, 0.0, 0.0);
    159143  glEnable(GL_DEPTH_TEST);
    160   glEnable(GL_COLOR);
    161   glShadeModel(GL_FLAT);
     144 
     145  // LIGHTING
     146  GLfloat lmodelAmbient[] = {.1, .1, .1, 1.0};
     147  GLfloat whiteLight[] = {1.0, 1.0, 1.0,1.0};
     148  GLfloat lightPosition[] = {10.0, 10, 19.0, 0.0};
     149
     150  glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteLight);
     151  glLightfv(GL_LIGHT0, GL_SPECULAR, whiteLight);
     152  glEnable(GL_LIGHTING);
     153  glEnable(GL_LIGHT0);
     154  glEnable(GL_DEPTH_TEST);
     155  glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
     156  glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteLight);
     157   
     158  //  glEnable(GL_COLOR);
     159  //  glShadeModel(GL_SMOOTH);
    162160 
    163161  // create camera
    164   localcamera = new Camera(world);
    165  
    166   return 0;
    167 }
     162  //localcamera = new Camera(world); /* \todo camera/input node not used anymore*/
     163 
     164  return 0;
     165}
     166
    168167
    169168/**
    170169   \brief initializes the sound engine
    171170*/
    172 int Orxonox::init_sound ()
    173 {
     171int Orxonox::initSound()
     172{
     173  printf("> Initializing sound\n");
     174  // SDL_Init(SDL_INIT_AUDIO);
    174175  printf("Not yet implemented\n");
    175176  return 0;
    176177}
    177178
     179
    178180/**
    179181   \brief initializes input functions
    180182*/
    181 int Orxonox::init_input ()
     183int Orxonox::initInput()
    182184{
    183185  // create localinput
     
    187189}
    188190
     191
    189192/**
    190193   \brief initializes network system
    191194*/
    192 int Orxonox::init_networking ()
     195int Orxonox::initNetworking()
    193196{
    194197  printf("Not yet implemented\n");
     
    196199}
    197200
     201
    198202/**
    199203   \brief initializes and loads resource files
    200204*/
    201 int Orxonox::init_resources ()
     205int Orxonox::initResources()
    202206{
    203207  printf("Not yet implemented\n");
     
    205209}
    206210
     211
    207212/**
    208213   \brief initializes the world
    209214*/
    210 int Orxonox::init_world ()
     215int Orxonox::initWorld()
    211216{
    212217  //world = new World();
     
    236241}
    237242
     243
    238244/**
    239245   \brief exits Orxonox
     
    244250}
    245251
    246 /**
    247    \brief this runs all of Orxonox
    248 */
    249 void Orxonox::mainLoop()
    250 {
    251   lastframe = SDL_GetTicks();
    252   bQuitOrxonox = false;
    253   // This is where everything is run
    254   printf("Orxonox|Entering main loop\n");
    255   while( !bQuitOrxonox)
    256     {
    257       // Network
    258       synchronize();
    259       // Process input
    260       handle_input();
    261       // Process time
    262       time_slice();
    263       // Process collision
    264       collision();
    265       // Draw
    266       display();
    267     }
    268   printf("Orxonox|Exiting the main loop\n");
    269 }
     252
    270253
    271254/**
     
    273256   \param event: an event not handled by the CommandNode
    274257*/
    275 void Orxonox::event_handler (SDL_Event* event)
     258void Orxonox::eventHandler(SDL_Event* event)
    276259{
    277260  // Handle special events such as reshape, quit, focus changes
    278261}
    279 
    280 /**
    281    \brief synchronize local data with remote data
    282 */
    283 void Orxonox::synchronize ()
    284 {
    285   // Get remote input
    286   // Update synchronizables
    287 }
    288 
    289 /**
    290    \brief run all input processing
    291 */
    292 void Orxonox::handle_input ()
    293 {
    294   // localinput
    295   localinput->process();
    296   // remoteinput
    297 }
    298 
    299 /**
    300    \brief advance the timeline
    301 */
    302 void Orxonox::time_slice ()
    303 {
    304   Uint32 curframe = SDL_GetTicks();
    305   if( !pause)
    306     {
    307       Uint32 dt = curframe - lastframe;
    308      
    309       if(dt > 0)
    310         {
    311           float fps = 1000/dt;
    312           printf("fps = %f\n", fps);
    313         }
    314      
    315       world->time_slice (dt);
    316       world->update ();
    317       localcamera->time_slice (dt);
    318     }
    319   lastframe = curframe;
    320 }
    321 
    322 /**
    323    \brief compute collision detection
    324 */
    325 void Orxonox::collision ()
    326 {
    327   world->collide ();
    328 }
     262 
    329263
    330264/**
     
    333267   \return true if the command was handled by the system or false if it may be passed to the WorldEntities
    334268*/
    335 bool Orxonox::system_command (Command* cmd)
    336 {
     269bool Orxonox::systemCommand(Command* cmd)
     270{
     271  /*
    337272  if( !strcmp( cmd->cmd, "quit"))
    338273    {
     
    341276    }
    342277  return false;
    343 }
    344 
    345 /**
    346    \brief render the current frame
    347 */
    348 void Orxonox::display ()
    349 {
    350   // clear buffer
    351   glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    352   // set camera
    353   localcamera->apply ();
    354   // draw world
    355   world->draw ();
    356   // draw HUD
    357   // flip buffers
    358   SDL_GL_SwapBuffers();
    359 }
     278  */
     279  return false;
     280}
     281
    360282
    361283/**
     
    363285   \return a pointer to localcamera
    364286*/
    365 Camera* Orxonox::get_camera ()
     287Camera* Orxonox::getCamera()
    366288{
    367289  return localcamera;
    368290}
     291
    369292
    370293/**
     
    372295   \return a pointer to localinput
    373296*/
    374 CommandNode* Orxonox::get_localinput ()
     297CommandNode* Orxonox::getLocalInput()
    375298{
    376299  return localinput;
    377300}
     301
    378302
    379303/**
     
    381305   \return a pointer to world
    382306*/
    383 World* Orxonox::get_world ()
     307World* Orxonox::getWorld()
    384308{
    385309  return world;
    386310}
    387311
    388 int main (int argc, char** argv)
     312
     313
     314
     315int main(int argc, char** argv)
    389316
    390317  printf(">>> Starting Orxonox <<<\n");
    391318  Orxonox *orx = Orxonox::getInstance();
    392319 
    393   if( (*orx).init(argc, argv) == -1)
     320  if((*orx).init(argc, argv) == -1)
    394321    {
    395322      printf("! Orxonox initialization failed\n");
     
    397324    }
    398325 
    399   //(*orx).mainLoop();
    400 
    401326  orx->start();
    402327 
  • orxonox/branches/buerli/src/orxonox.h

    r2707 r3238  
    44*/
    55
    6 #ifndef ORXONOX_H
    7 #define ORXONOX_H
    8 
    9 #include <SDL/SDL.h>
     6#ifndef _ORXONOX_H
     7#define _ORXONOX_H
    108
    119#include "stdincl.h"
     
    2422
    2523 private:
    26   static Orxonox* singleton_ref;
     24  static Orxonox* singletonRef;
    2725  Orxonox ();
    2826  ~Orxonox ();
     
    4038  Uint32 lastframe;
    4139 
    42   void get_config_file (int argc, char** argv);
     40  void getConfigFile (int argc, char** argv);
    4341 
    4442  // main loop functions
    45   void synchronize ();
    46   void handle_input ();
    47   void time_slice ();
    48   void collision ();
    49   void display ();
     43  //  void synchronize ();
     44  //void handle_input ();
     45  //void time_slice ();
     46  //void collision ();
     47  //void display ();
    5048 
    5149        // subsystem initialization
    52   int init_video ();
    53   int init_sound ();
    54   int init_input ();
    55   int init_networking ();
    56   int init_resources ();
    57   int init_world ();
     50  int initVideo ();
     51  int initSound ();
     52  int initInput ();
     53  int initNetworking ();
     54  int initResources ();
     55  int initWorld ();
    5856 
    5957 public:
     
    6260  void quitGame();
    6361
    64   void event_handler (SDL_Event* event);
    65   bool system_command (Command* cmd);
     62  void eventHandler (SDL_Event* event);
     63  bool systemCommand (Command* cmd);
    6664
    6765  int init (int argc, char** argv);
    6866 
    69   CommandNode* get_localinput();
    70   Camera* get_camera();
    71   World* get_world();
     67  CommandNode* getLocalInput();
     68  Camera* getCamera();
     69  World* getWorld();
    7270 
    73   void mainLoop();
     71  //void mainLoop();
    7472};
    7573
    76 #endif
     74#endif /* _ORXONOX_H */
    7775
  • orxonox/branches/buerli/src/player.cc

    r2707 r3238  
    2525Player::Player(bool isFree) : WorldEntity(isFree)
    2626{
    27 }
    2827
    29 Player::~Player ()
     28  this->obj = new Object("reaplow.obj");
     29  /*
     30  objectList = glGenLists(1);
     31  glNewList (objectList, GL_COMPILE);
    3032
    31 {
    32 }
    33 
    34 void Player::post_spawn ()
    35 {
    36         travel_speed = 15.0;
    37         velocity = Vector();
    38         bUp = bDown = bLeft = bRight = bAscend = bDescend = false;
    39         bFire = false;
    40         acceleration = 10.0;
    41         set_collision (new CollisionCluster (1.0, Vector(0,0,0)));
    42 }
    43 
    44 void Player::tick (float time)
    45 {
    46         // movement
    47         move (time);
    48 }
    49 
    50 void Player::hit (WorldEntity* weapon, Vector loc)
    51 {
    52 }
    53 
    54 void Player::destroy ()
    55 {
    56 }
    57 
    58 void Player::collide (WorldEntity* other,  Uint32 ownhitflags, Uint32 otherhitflags)
    59 {
    60 }
    61 
    62 void Player::command (Command* cmd)
    63 {
    64   //printf("Player|recieved command [%s]\n", cmd->cmd);
    65   if( !strcmp( cmd->cmd, "up")) bUp = !cmd->bUp;
    66   else if( !strcmp( cmd->cmd, "down")) bDown = !cmd->bUp;
    67   else if( !strcmp( cmd->cmd, "left")) bLeft = !cmd->bUp;
    68   else if( !strcmp( cmd->cmd, "right")) bRight = !cmd->bUp;
    69   else if( !strcmp( cmd->cmd, "fire")) bFire = !cmd->bUp;
    70 }
    71 
    72 void Player::draw ()
    73 {
    74   glMatrixMode(GL_MODELVIEW);
    75   glLoadIdentity();
    76   float matrix[4][4];
    77  
    78   glTranslatef(get_placement()->r.x,get_placement()->r.y,get_placement()->r.z);
    79   get_placement()->w.matrix (matrix);
    80   glMultMatrixf ((float*)matrix);
    81  
    8233  glBegin(GL_TRIANGLES);
    8334  glColor3f(1,1,1);
     
    9950  glEnd();
    10051 
    101   //printf("Player@%f/%f/%f\n", get_placement()->r.x, get_placement()->r.y, get_placement()->r.z);
     52  glEndList ();
     53  */
    10254}
    10355
    104 void Player::get_lookat (Location* locbuf)
     56Player::~Player()
    10557{
    106         *locbuf = *get_location();
    107         //locbuf->dist += 5.0;
     58  delete this->obj;
    10859}
    10960
    110 void Player::left_world ()
     61void Player::postSpawn()
     62{
     63  travelSpeed = 15.0;
     64  velocity = Vector();
     65  bUp = bDown = bLeft = bRight = bAscend = bDescend = false;
     66  bFire = false;
     67  acceleration = 10.0;
     68  setCollision(new CollisionCluster(1.0, Vector(0,0,0)));
     69}
     70
     71void Player::tick(float time)
     72{
     73  // movement
     74  move (time);
     75}
     76
     77void Player::hit(WorldEntity* weapon, Vector loc)
    11178{
    11279}
    11380
    114 void Player::move (float time)
     81void Player::destroy()
     82{
     83}
     84
     85void Player::collide(WorldEntity* other, Uint32 ownhitflags, Uint32 otherhitflags)
     86{
     87}
     88
     89void Player::command(Command* cmd)
     90{
     91  //printf("Player|recieved command [%s]\n", cmd->cmd);
     92  if( !strcmp( cmd->cmd, "up")) bUp = !cmd->bUp;
     93  else if( !strcmp( cmd->cmd, "down")) bDown = !cmd->bUp;
     94  else if( !strcmp( cmd->cmd, "left")) bLeft = !cmd->bUp;
     95  else if( !strcmp( cmd->cmd, "right")) bRight = !cmd->bUp;
     96  else if( !strcmp( cmd->cmd, "fire")) bFire = !cmd->bUp;
     97}
     98
     99void Player::draw()
     100{
     101  glMatrixMode(GL_MODELVIEW);
     102  glLoadIdentity();
     103  float matrix[4][4];
     104 
     105  glTranslatef(getPlacement()->r.x, getPlacement()->r.y, getPlacement()->r.z);
     106  getPlacement()->w.matrix (matrix);
     107  glMultMatrixf((float*)matrix);
     108 
     109  glMatrixMode(GL_MODELVIEW);
     110  glRotatef(-90, 0,1,0);
     111  obj->draw();
     112  // glCallList(objectList);
     113
     114 
     115 
     116}
     117
     118void Player::getLookat(Location* locbuf)
     119{
     120  *locbuf = *getLocation();
     121  //locbuf->dist += 5.0;
     122}
     123
     124void Player::leftWorld()
     125{
     126}
     127
     128void Player::move(float time)
    115129{
    116130  Vector accel(0.0, 0.0, 0.0);
    117   /* FIXME: calculating the direction and orthDirection every time_slice is redundant! save it somewhere */
    118   Placement *pos = get_placement();
     131  /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */
     132  Placement *pos = getPlacement();
    119133  /* calculate the direction in which the craft is heading  */
    120134  Vector direction(0.0, 0.0, 1.0);
     
    128142  if( bRight ) { accel = accel - (orthDirection*acceleration); }
    129143  if( bAscend ) { /* not yet implemented but just: (0,0,1)*acceleration */}
    130   if( bDescend) {/* FIXME */}
     144  if( bDescend) {/* FIXME */} /* \todo up and down player movement */
    131145
    132   Location* l = get_location();
     146  Location* l = getLocation();
    133147 
    134148  // r(t) = r(0) + v(0)*t + 1/2*a*t^2
     
    138152
    139153  /* this the base-speed of the player: determines how fast and how the player follows the track*/
    140   l->dist = l->dist + travel_speed * time;
     154  l->dist = l->dist + travelSpeed * time;
    141155
    142156  /* this updates the player position on the track - user interaction */
    143157  l->pos = l->pos + accel*time;
    144158}
    145 
    146 
    147 
    148 
    149 
    150 
    151 
    152 
    153 
    154 
    155 
    156 
    157 
    158 
    159 
    160 
    161 
    162 
  • orxonox/branches/buerli/src/player.h

    r2551 r3238  
    44*/
    55
    6 #ifndef PLAYER_H
    7 #define PLAYER_H
     6#ifndef _PLAYER_H
     7#define _PLAYER_H
    88
    99#include "world_entity.h"
     10#include "importer/object.h"
    1011
    1112//! Basic controllable WorldEntity
     
    1516 
    1617 public:
    17   Player (bool isFree = false);
    18   ~Player ();
     18  Player(bool isFree = false);
     19  ~Player();
    1920 
    20   virtual void post_spawn ();
    21   virtual void tick (float time);
    22   virtual void hit (WorldEntity* weapon, Vector loc);
    23   virtual void destroy ();
    24   virtual void collide (WorldEntity* other, Uint32 ownhitflags, Uint32 otherhitflags);
    25   virtual void command (Command* cmd);
     21  virtual void postSpawn();
     22  virtual void tick(float time);
     23  virtual void hit(WorldEntity* weapon, Vector loc);
     24  virtual void destroy();
     25  virtual void collide(WorldEntity* other, Uint32 ownhitflags, Uint32 otherhitflags);
     26  virtual void command(Command* cmd);
    2627 
    27   virtual void draw ();
    28   virtual void get_lookat (Location* locbuf);
     28  virtual void draw();
     29  virtual void getLookat(Location* locbuf);
    2930 
    30   virtual void left_world ();
     31  virtual void leftWorld();
    3132 
    3233 private:
     
    3435  bool bFire;
    3536  Vector velocity;
    36   float travel_speed;
     37  float travelSpeed;
    3738  float acceleration;
     39  GLuint objectList;
     40  Object* obj;
    3841 
    39   void move (float time);
     42  void move(float time);
    4043 
    4144};
    4245
    43 #endif
     46#endif /* _PLAYER_H */
  • orxonox/branches/buerli/src/power_up.h

    r2077 r3238  
    44*/
    55
    6 #ifndef POWER_UP_H
    7 #define POWER_UP_H
     6#ifndef _POWER_UP_H
     7#define _POWER_UP_H
    88
    99#include "data_tank.h"
     
    1919};
    2020
    21 #endif
     21#endif /* _POWER_UP_H */
  • orxonox/branches/buerli/src/proto_class.h

    r2036 r3238  
    11
    2 #ifndef PROTO_CLASS_H
    3 #define PROTO_CLASS_H
     2#ifndef _PROTO_CLASS_H
     3#define _PROTO_CLASS_H
    44
    55#include "data_tank.h"
     
    1414};
    1515
    16 #endif
     16#endif /* _PROTO_CLASS_H */
  • orxonox/branches/buerli/src/shoot_laser.h

    r2036 r3238  
    11
    2 #ifndef SHOOT_LASER_H
    3 #define SHOOT_LASER_H
     2#ifndef _SHOOT_LASER_H
     3#define _SHOOT_LASER_H
    44
    55
     
    4040};
    4141
    42 #endif
     42#endif /* _SHOOT_LASER_H */
  • orxonox/branches/buerli/src/shoot_rocket.h

    r2036 r3238  
    11
    2 #ifndef SHOOT_ROCKET_H
    3 #define SHOOT_ROCKET_H
     2#ifndef _SHOOT_ROCKET_H
     3#define _SHOOT_ROCKET_H
    44
    55
     
    5454};
    5555
    56 #endif
     56#endif /* _SHOOT_ROCKET_H */
  • orxonox/branches/buerli/src/stdincl.h

    r2707 r3238  
     1/*!
     2  \file stdincl.h
     3  \brief This file includes default headers that nearly every Class needs.
     4 
     5  no Class is defined here, but many headers to classes, and more general Headers like the openGL-header.
     6*/
    17
    2 #ifndef STDINCL_H
    3 #define STDINCL_H
     8#ifndef _STDINCL_H
     9#define _STDINCL_H
    410
    5 #define null 0
     11#define null 0   //!< null
     12
     13// this includes the information from configure/makefiles
     14#if HAVE_CONFIG_H
     15#include <config.h>
     16#endif
    617
    718#ifdef __WIN32__
    819#include <windows.h>
    920#endif
     21
     22#ifndef __APPLE__
    1023#include <SDL/SDL.h>
    1124#include <GL/gl.h>
    1225#include <GL/glu.h>
     26#else
     27#include <SDL.h>
     28#include <OpenGL/gl.h>
     29#include <OpenGL/glu.h>
     30#endif
    1331
    1432#include "vector.h"
    1533#include "coordinates.h"
    1634#include "list.h"
     35#include "list_template.h"
    1736#include "error.h"
     37#include "debug.h"
    1838#include "message_structures.h"
    1939#include "orxonox.h"
    2040
    21 #endif
     41#endif /* _STDINCL_H */
  • orxonox/branches/buerli/src/story_def.h

    r2707 r3238  
    11
    2 #ifndef STORY_DEF_H
    3 #define STORY_DEF_H
     2#ifndef _STORY_DEF_H
     3#define _STORY_DEF_H
    44
    55
    6 #define DEBUG_CAMPAIGN_0 0
    7 #define DEBUG_CAMPAIGN_1 1
    8 #define DEBUG_CAMPAIGN_2 2
     6#define DEBUG_CAMPAIGN_0 1000
     7#define DEBUG_CAMPAIGN_1 1001
     8#define DEBUG_CAMPAIGN_2 1002
    99
    10 #define DEBUG_WORLD_0 0
    11 #define DEBUG_WORLD_1 1
    12 #define DEBUG_WORLD_2 2
     10#define DEBUG_WORLD_0 100
     11#define DEBUG_WORLD_1 101
     12#define DEBUG_WORLD_2 102
    1313
    1414#define WORLD_ID_0 0
     
    2020#define WORLD_ID_GAMEEND 999
    2121
    22 #define MAX_STORY_ENTITIES 99; //!> maximal StoryEntities in a Campaign
     22#define MAX_STORY_ENTITIES 99 //!> maximal StoryEntities in a Campaign
    2323
    24 #endif
     24#endif /* _STORY_DEF_H */
  • orxonox/branches/buerli/src/story_entity.cc

    r2707 r3238  
    3030/**
    3131    \brief initialize the entity before use.
     32    \returns an error code if not able to apply.
    3233
    3334    After execution of this function, the Entity is ready to be played/executed,
    3435    this shifts the initialisation work before the execution - very important...
    35    
    3636*/
    37 Error StoryEntity::init()
     37ErrorMessage StoryEntity::init()
    3838{}
    3939
    4040
    41 void StoryEntity::setStoryID(Uint32 storyID)
     41/**
     42    \brief sets the story ID
     43
     44    sets the story id of the current entity, this enables it to be identified in a
     45    global context.
     46*/
     47void StoryEntity::setStoryID(int storyID)
    4248{
    4349  this->storyID = storyID;
    4450}
    4551
     52
     53/**
     54    \brief this reads the story id of the current entity
     55    \returns the story entity id
     56*/
    4657int StoryEntity::getStoryID()
    4758{
     
    5061
    5162
    52 void StoryEntity::setNextStoryID(Uint32 nextStoryID)
     63/**
     64    \brief sets the id of the next story entity
     65   
     66    StoryEntities can choose their following entity themselfs. the entity id defined here
     67    will be startet after this entity ends. this can be convenient if you want to have a
     68    non linear story with switches.
     69*/
     70void StoryEntity::setNextStoryID(int nextStoryID)
    5371{
    5472  this->nextStoryID = nextStoryID;
    5573}
    5674
    57 Uint32 StoryEntity::getNextStoryID()
     75/**
     76    \brief gets the story id of the current entity
     77    \returns story id
     78*/
     79int StoryEntity::getNextStoryID()
    5880{
    5981  return this->nextStoryID;
     
    6183
    6284
    63 Error StoryEntity::start(Uint32 storyID)
    64 {}
     85/**
     86    \brief starts the entity with the choosen id. only for entities with lists.
     87    \param story id
     88    \returns error code if this action has caused a error
    6589
    66 Error StoryEntity::start()
    67 {}
    68 
    69 Error StoryEntity::stop()
    70 {}
    71 
    72 Error StoryEntity::pause()
    73 {}
    74 
    75 Error StoryEntity::resume()
     90    this simply starts the story with the id storyID. the story with the choosen id has
     91    to be part of the current entity else, this doesn't make sense. this is used for
     92    campaigns or the GameLoader, they have lists of Campaigns/Worlds with their own
     93    storyID.
     94*/
     95ErrorMessage StoryEntity::start(int storyID)
    7696{}
    7797
    7898
     99/**
     100    \brief starts the current entity
     101    \returns error code if this action has caused a error   
     102*/
     103ErrorMessage StoryEntity::start()
     104{}
     105
     106
     107/**
     108    \brief stops the current entity
     109    \returns error code if this action has caused a error
     110
     111    ATTENTION: this function shouldn't call other functions, or if so, they must return
     112    after finishing. If you ignore or forget to do so, the current entity is not able to
     113    terminate and it will run in the background or the ressources can't be freed or even
     114    worse: are freed and the program will end in a segmentation fault!
     115    hehehe, all seen... :)
     116*/
     117ErrorMessage StoryEntity::stop()
     118{}
     119
     120
     121/**
     122    \brief pause the current entity
     123    \returns error code if this action has caused a error
     124
     125    this pauses the current entity or passes this call forth to the running entity.
     126*/
     127ErrorMessage StoryEntity::pause()
     128{}
     129
     130
     131/**
     132    \brief resumes a pause
     133    \returns error code if this action has caused a error
     134
     135    this resumess the current entity or passes this call forth to the running entity.
     136*/
     137ErrorMessage StoryEntity::resume()
     138{}
     139
     140
     141/**
     142    \brief loads the current entity
     143
     144    this is here to enable you loading maps into the entities. for all other actions you
     145    should take the init() function.
     146*/
    79147void StoryEntity::load()
    80148{}
    81149
    82150
    83 void StoryEntity::displayEntityScreen()
     151/**
     152    \brief destroys and cleans up the current entity.
     153
     154    this cleans up ressources before the deconstructor is called. for terminating
     155    the entity please use the stop() function.
     156*/
     157void StoryEntity::destroy()
    84158{}
    85159
    86 void StoryEntity::releaseEntityScreen()
     160
     161/**
     162    \brief this displays the load screen
     163
     164    it will need some time to load maps or things like that. to inform the user about
     165    progress and to just show him/her something for the eyes, put here this stuff
     166*/
     167void StoryEntity::displayLoadScreen()
    87168{}
     169
     170
     171/**
     172    \brief undisplay the load screen
     173
     174    the load process has terminated, you now can release the load screen and start this
     175    entity.
     176*/
     177void StoryEntity::releaseLoadScreen()
     178{}
  • orxonox/branches/buerli/src/story_entity.h

    r2707 r3238  
     1/*!
     2    \file story_entity.h
     3    \brief holds the base class of everything that is playable - that is part of the story
     4*/
    15
    2 #ifndef STORY_ENTITY_H
    3 #define STORY_ENTITY_H
     6
     7#ifndef _STORY_ENTITY_H
     8#define _STORY_ENTITY_H
    49
    510#include "stdincl.h"
    611#include "story_def.h"
    712
     13//! A class that represents something to play in orxonox. it is a container for worlds, movies, mission briefings, etc...
    814class StoryEntity {
    915
    1016 public:
    1117  StoryEntity ();
    12   ~StoryEntity ();
     18  virtual ~StoryEntity ();
    1319
    14   bool isInit;
    15   bool isPaused;
     20  bool isInit;  //! if the entity is initialized, this has to be true
     21  bool isPaused; //! is true if the entity is paused
    1622
    17   virtual Error init();
    18   virtual Error start(Uint32 storyID);
    19   virtual Error start();
    20   virtual Error stop();
    21   virtual Error pause();
    22   virtual Error resume();
     23  virtual ErrorMessage init();
     24  virtual ErrorMessage start(int storyID);
     25  virtual ErrorMessage start();
     26  virtual ErrorMessage stop();
     27  virtual ErrorMessage pause();
     28  virtual ErrorMessage resume();
    2329
    2430  virtual void load();
     31  virtual void destroy();
    2532
    26   virtual void displayEntityScreen();
    27   virtual void releaseEntityScreen();
     33  virtual void displayLoadScreen();
     34  virtual void releaseLoadScreen();
    2835
    29   void setStoryID(Uint32 storyID);
     36  void setStoryID(int storyID);
    3037  int getStoryID();
    3138
    32   void setNextStoryID(Uint32 nextStoryID);
    33   Uint32 getNextStoryID();
     39  void setNextStoryID(int nextStoryID);
     40  int getNextStoryID();
    3441
    3542
    3643 private:
    37   Uint32 storyID;
    38   Uint32 nextStoryID;
     44  int storyID; //! this is the number of this entity, identifying it in a list/tree...
     45  int nextStoryID; //! if this entity has finished, this entity shall be called
    3946};
    4047
    41 #endif
     48#endif /* _STORY_ENTITY_H */
  • orxonox/branches/buerli/src/synchronisable.h

    r2036 r3238  
    11
    2 #ifndef SYNCHRONISABLE_H
    3 #define SYNCHRONISABLE_H
     2#ifndef _SYNCHRONISABLE_H
     3#define _SYNCHRONISABLE_H
    44
    55#include "data_tank.h"
     
    2222};
    2323
    24 #endif
     24#endif /* _SYNCHRONISABLE_H */
  • orxonox/branches/buerli/src/track.cc

    r2707 r3238  
    2121
    2222/**
    23         \brief creates a null Track part
     23   \brief creates a null Track part
    2424*/
    2525Track::Track ()
    2626{
    27         ID = 0;
    28         offset = NULL;
    29         end = NULL;
    30         nextID = 0;
     27  this->ID = 0;
     28  this->offset = NULL;
     29  this->end = NULL;
     30  this->nextID = 0;
    3131}
    3232
    3333/**
    34         \brief creates a functional base Track part
    35         \param number: the ID if this Track part
    36         \param next: the ID of the next Track part
    37         \param start: pointer to an anchor point (Vector) representing the offset of this part
    38         \param finish: pointer to an anchor point (Vector) representing the end of this part
     34   \brief creates a functional base Track part
     35   \param number: the ID if this Track part
     36   \param next: the ID of the next Track part
     37   \param start: pointer to an anchor point (Vector) representing the offset of this part
     38   \param finish: pointer to an anchor point (Vector) representing the end of this part
    3939*/
    4040Track::Track (Uint32 number, Uint32 next, Vector* start, Vector* finish)
    4141{
    42         ID = number;
    43         offset = start;
    44         end = finish;
    45         nextID = next;
     42  this->ID = number;
     43  this->offset = start;
     44  this->end = finish;
     45  this->nextID = next;
    4646}
    4747
    4848/**
    49         \brief removes the Track part from memory
     49   \brief removes the Track part from memory
    5050*/
    5151Track::~Track ()
     
    6868   at inside camera boundaries.
    6969*/
    70 void Track::map_camera (Location* lookat, Placement* camplc)
     70void Track::mapCamera (Location* lookat, Placement* camplc)
    7171{
    7272  Line trace(*offset, *end - *offset);
     
    103103   when transfering between track parts.
    104104*/
    105 bool Track::map_coords (Location* loc, Placement* plc)
     105bool Track::mapCoords (Location* loc, Placement* plc)
    106106{
    107         Line trace(*offset, *end - *offset);
    108         float l = trace.len ();
    109        
    110         /* change to the next track? */
    111         if( loc->dist > l)
    112         {
    113                 loc->dist -= l;
    114                 loc->part = nextID;
    115                 //FIXME: loc->track = this;
    116                 return true;
    117         }
    118        
    119         /* this quaternion represents the rotation from start-vector (0,0,1) to the direction of
    120         * the track */
    121         Quaternion dir(trace.a, Vector(0,0,1));
    122 
    123         plc->r = trace.r + (trace.a * ((loc->dist) / l)) + /*dir.apply*/(loc->pos);
    124         plc->w = dir * loc->rot;
    125        
    126         return false;
     107  Line trace(*offset, *end - *offset);
     108  float l = trace.len ();
     109 
     110  /* change to the next track? */
     111  if( loc->dist > l)
     112    {
     113      loc->dist -= l;
     114      loc->part = nextID;
     115      //FIXME: loc->track = this;
     116      return true;
     117    }
     118 
     119  /* this quaternion represents the rotation from start-vector (0,0,1) to the direction of
     120  * the track */
     121  Quaternion dir(trace.a, Vector(0,0,1));
     122 
     123  plc->r = trace.r + (trace.a * ((loc->dist) / l)) + /*dir.apply*/(loc->pos);
     124  plc->w = dir * loc->rot;
     125 
     126  return false;
    127127}
    128128
     129
    129130/**
    130         \brief this is called when a WorldEntity enters a Track part
    131         \param entity: pointer to the WorldEntity in question
    132        
    133         You can do stuff like add or remove effects, do some coordinate finetuning
    134         or whatever in here.
     131   \brief this is called when a WorldEntity enters a Track part
     132   \param entity: pointer to the WorldEntity in question
     133   
     134   You can do stuff like add or remove effects, do some coordinate finetuning
     135   or whatever in here.
    135136*/
    136 void Track::post_enter (WorldEntity* entity)
     137void Track::postEnter (WorldEntity* entity)
    137138{
    138139}
    139140
     141
    140142/**
    141         \brief this is called when a WorldEntity leaves a Track part
    142         \param entity: pointer to the WorldEntity in question
    143        
    144         You can do stuff like add or remove effects, do some coordinate finetuning
    145         or whatever in here.
     143   \brief this is called when a WorldEntity leaves a Track part
     144   \param entity: pointer to the WorldEntity in question
     145   
     146   You can do stuff like add or remove effects, do some coordinate finetuning
     147   or whatever in here.
    146148*/
    147 void Track::post_leave (WorldEntity* entity)
     149void Track::postLeave (WorldEntity* entity)
    148150{
    149151}
    150152
     153
    151154/**
    152         \brief this is called every frame
    153         \param deltaT: amount of time passed since the last frame in seconds
    154        
    155         Do time based or polling scripts here.
     155   \brief this is called every frame
     156   \param deltaT: amount of time passed since the last frame in seconds
     157   
     158   Do time based or polling scripts here.
    156159*/
    157160void Track::tick (float deltaT)
  • orxonox/branches/buerli/src/track.h

    r2707 r3238  
    44*/
    55
    6 #ifndef TRACK_H
    7 #define TRACK_H
     6#ifndef _TRACK_H
     7#define _TRACK_H
    88
    99#include "stdincl.h"
     
    2525  Uint32 nextID;
    2626 
    27         
     27  
    2828 public:
    2929  Track ();
     
    3232  virtual void init();
    3333 
    34   virtual void post_enter (WorldEntity* entity);        // handle coordinate transition in here !!! (when dist < 0 or dist > lasttracklenght)
    35   virtual void post_leave (WorldEntity* entity);
     34  virtual void postEnter (WorldEntity* entity); // handle coordinate transition in here !!! (when dist < 0 or dist > lasttracklenght)
     35  virtual void postLeave (WorldEntity* entity);
    3636  virtual void tick (float deltaT);
    37   virtual void map_camera (Location* lookat, Placement* camplc);
    38   virtual bool map_coords (Location* loc, Placement* plc);      // this should return true if the entity left track boundaries
     37  virtual void mapCamera (Location* lookat, Placement* camplc);
     38  virtual bool mapCoords (Location* loc, Placement* plc);       // this should return true if the entity left track boundaries
    3939};
    4040
    41 #endif
     41#endif /* _TRACK_H */
  • orxonox/branches/buerli/src/vector.cc

    r2551 r3238  
    3333{
    3434  Vector r;
    35  
     35
    3636  r.x = x + v.x;
    3737  r.y = y + v.y;
     
    203203   \return the angle between the vectors in radians
    204204*/
    205 float angle_rad (const Vector& v1, const Vector& v2)
     205float angleRad (const Vector& v1, const Vector& v2)
    206206{
    207207  return acos( v1 * v2 / (v1.len() * v2.len()));
     
    215215   \return the angle between the vectors in degrees
    216216*/
    217 float angle_deg (const Vector& v1, const Vector& v2)
     217float angleDeg (const Vector& v1, const Vector& v2)
    218218{
    219219  float f;
     
    243243
    244244/**
    245    \brief calculates a look_at rotation
     245   \brief calculates a lookAt rotation
    246246   \param dir: the direction you want to look
    247247   \param up: specify what direction up should be
     
    578578  Vector axis = x.cross( v);
    579579  axis.normalize();
    580   float angle = angle_rad( x, v);
     580  float angle = angleRad( x, v);
    581581  float ca = cos(angle);
    582582  float sa = sin(angle);
     
    714714   \return the rotated vector
    715715*/
    716 Vector rotate_vector( const Vector& v, const Rotation& r)
     716Vector rotateVector( const Vector& v, const Rotation& r)
    717717{
    718718  Vector t;
     
    745745   \return the distance between the Line and the point
    746746*/
    747 float Line::distance_point (const Vector& v) const
     747float Line::distancePoint (const Vector& v) const
    748748{
    749749  Vector d = v-r;
     
    761761  Vector* fp = new Vector[2];
    762762  Plane p = Plane (r + a.cross(l.a), r, r + a);
    763   fp[1] = p.intersect_line (l);
     763  fp[1] = p.intersectLine (l);
    764764  p = Plane (fp[1], l.a);
    765   fp[0] = p.intersect_line (*this);
     765  fp[0] = p.intersectLine (*this);
    766766  return fp;
    767767}
     
    783783{
    784784  Vector t = a + r;
    785   t = rotate_vector( t, rot);
    786   r = rotate_vector( r, rot),
     785  t = rotateVector( t, rot);
     786  r = rotateVector( r, rot),
    787787  a = t - r;
    788788}
     
    815815   \param l: a line
    816816*/
    817 Vector Plane::intersect_line (const Line& l) const
     817Vector Plane::intersectLine (const Line& l) const
    818818{
    819819  if (n.x*l.a.x+n.y*l.a.y+n.z*l.a.z == 0.0) return Vector(0,0,0);
     
    827827   \return the distance between the plane and the point (can be negative)
    828828*/
    829 float Plane::distance_point (const Vector& p) const
     829float Plane::distancePoint (const Vector& p) const
    830830{
    831831  float l = n.len();
     
    839839   \return 0 if the point is contained within the Plane, positive(negative) if the point is in the positive(negative) semi-space of the Plane
    840840*/
    841 float Plane::locate_point (const Vector& p) const
     841float Plane::locatePoint (const Vector& p) const
    842842{
    843843  return (n.dot(p) + k);
    844844}
     845
     846
     847/**
     848   \brief Creates a new BezierCurve
     849*/
     850BezierCurve::BezierCurve (void)
     851{
     852  nodeCount = 0;
     853  firstNode = new PathNode;
     854  currentNode = firstNode;
     855
     856  firstNode->position = Vector (.0, .0, .0);
     857  firstNode->number = 0;
     858  firstNode->next = 0; // not sure if this really points to NULL!!
     859
     860  return;
     861}
     862
     863/**
     864   \brief Deletes a BezierCurve.
     865   It does this by freeing all the space taken over from the nodes
     866*/
     867BezierCurve::~BezierCurve (void)
     868{
     869  PathNode* tmpNode;
     870  currentNode = firstNode;
     871  while (tmpNode != 0)
     872    {
     873      tmpNode = currentNode;
     874      currentNode = currentNode->next;
     875      delete tmpNode;
     876    }
     877}
     878
     879/**
     880   \brief adds a new Node to the bezier Curve
     881   \param newNode a Vector to the position of the new node
     882*/
     883void BezierCurve::addNode(const Vector& newNode)
     884{
     885  PathNode* tmpNode;
     886  if (nodeCount == 0 )
     887    tmpNode = firstNode;
     888  else
     889    {
     890      tmpNode = new PathNode;
     891      currentNode = currentNode->next = tmpNode;
     892    }
     893  tmpNode->position = newNode;
     894  tmpNode->next = 0; // not sure if this really points to NULL!!
     895  tmpNode->number = (++nodeCount);
     896  return;
     897}
     898
     899/**
     900   \brief calculates the Position on the curve
     901   \param t The position on the Curve (0<=t<=1)
     902   \return the Position on the Path
     903*/
     904Vector BezierCurve::calcPos(float t)
     905{
     906  if (nodeCount <=4)
     907    {
     908      //      if (verbose >= 1)
     909      //      printf ("Please define at least 4 nodes, until now you have only defined %i.\n", nodeCount);
     910      curvePoint = Vector(0,0,0);
     911    }
     912  PathNode* tmpNode = firstNode;
     913   
     914  int k,kn,nn,nkn;
     915  double blend,muk,munk;
     916  Vector b = Vector(0.0,0.0,0.0);
     917 
     918  muk = 1;
     919  munk = pow(1-t,(double)nodeCount);
     920 
     921  for (k=0; k<=nodeCount; k++) {
     922    nn = nodeCount;
     923    kn = k;
     924    nkn = nodeCount - k;
     925    blend = muk * munk;
     926    muk *= t;
     927    munk /= (1-t);
     928    while (nn >= 1) {
     929      blend *= nn;
     930      nn--;
     931      if (kn > 1) {
     932        blend /= (double)kn;
     933        kn--;
     934      }
     935      if (nkn > 1) {
     936        blend /= (double)nkn;
     937        nkn--;
     938      }
     939    }
     940    b.x += tmpNode->position.x * blend;
     941    b.y += tmpNode->position.y * blend;
     942    b.z += tmpNode->position.z * blend;
     943
     944    tmpNode = tmpNode->next;
     945  }
     946  return b;
     947}
     948
     949Vector BezierCurve::calcDirection (float t)
     950{
     951  double diff = .00000000001;
     952 
     953  Vector diffV = ((calcPos(t+diff) - calcPos(t))/diff);
     954  diffV.normalize();
     955  return diffV;
     956}
     957
     958/**
     959  \brief returns the Position of the point calculated on the Curve
     960  \return a Vector to the calculated position
     961*/
     962Vector BezierCurve::getPos() const
     963{
     964  return curvePoint;
     965}
  • orxonox/branches/buerli/src/vector.h

    r2551 r3238  
    66*/
    77
    8 #ifndef VECTOR_H
    9 #define VECTOR_H
     8#ifndef _VECTOR_H
     9#define _VECTOR_H
    1010
    1111#include <math.h>
     
    4040};
    4141
    42 float angle_deg (const Vector& v1, const Vector& v2);
    43 float angle_rad (const Vector& v1, const Vector& v2);
     42float angleDeg (const Vector& v1, const Vector& v2);
     43float angleRad (const Vector& v1, const Vector& v2);
    4444
    4545//! Quaternion
     
    9898
    9999//!< Apply a rotation to a vector
    100 Vector rotate_vector( const Vector& v, const Rotation& r);
     100Vector rotateVector( const Vector& v, const Rotation& r);
    101101
    102102//! 3D line
     
    118118 
    119119  float distance (const Line& l) const;
    120   float distance_point (const Vector& v) const;
     120  float distancePoint (const Vector& v) const;
    121121  Vector* footpoints (const Line& l) const;
    122122  float len () const;
     
    144144  ~Plane () {}
    145145 
    146   Vector intersect_line (const Line& l) const;
    147   float distance_point (const Vector& p) const;
    148   float locate_point (const Vector& p) const;
     146  Vector intersectLine (const Line& l) const;
     147  float distancePoint (const Vector& p) const;
     148  float locatePoint (const Vector& p) const;
    149149};
    150150
    151 #endif
     151
     152
     153//! Bezier Curve
     154/**
     155   Class to handle bezier curves in 3-dimesnsional space
     156   
     157   needed for  the Tracking system in OrxOnoX.
     158*/
     159class BezierCurve
     160{
     161 private:
     162  int nodeCount;
     163  Vector curvePoint;
     164 
     165  struct PathNode
     166  {
     167    int number;
     168    Vector position;
     169    PathNode* next;
     170  };
     171
     172  PathNode* firstNode;
     173  PathNode* currentNode;
     174
     175 public:
     176  BezierCurve (void);
     177  ~BezierCurve (void);
     178  void addNode (const Vector& newNode);
     179  Vector calcPos (float t);
     180  Vector calcDirection (float t);
     181 
     182  Vector getPos () const;
     183};
     184
     185
     186
     187#endif /* _VECTOR_H */
  • orxonox/branches/buerli/src/world.cc

    r2707 r3238  
    2222#include "command_node.h"
    2323#include "camera.h"
     24#include "environment.h"
    2425
    2526using namespace std;
     
    3536  this->worldName = name;
    3637  this->debugWorldNr = -1;
    37   this->entities = new List<WorldEntity>();
     38  this->entities = new tList<WorldEntity>();
    3839}
    3940
     
    4243  this->debugWorldNr = worldID;
    4344  this->worldName = NULL;
    44   this->entities = new List<WorldEntity>();
     45  this->entities = new tList<WorldEntity>();
    4546}
    4647
     
    5051World::~World ()
    5152{
    52   Orxonox *orx = Orxonox::getInstance();
    53   orx->get_localinput()->unbind (this->localPlayer);
     53  printf("World::~World() - deleting current world\n");
     54  CommandNode* cn = Orxonox::getInstance()->getLocalInput();
     55  cn->unbind(this->localPlayer);
     56  cn->reset();
     57  this->localCamera->destroy();
     58
     59  WorldEntity* entity = entities->enumerate(); 
     60  while( entity != NULL )
     61    {
     62      entity->destroy();
     63      entity = entities->nextElement();
     64    }
     65  this->entities->destroy();
     66
    5467  delete this->entities;
    5568  delete this->localCamera;
    56 }
    57 
    58 
    59 /**
    60     \brief initialize the world before use.
    61 */
    62 Error World::init()
     69  /* this->localPlayer hasn't to be deleted explicitly, it is
     70     contained in entities*/
     71}
     72
     73
     74ErrorMessage World::init()
    6375{
    6476  this->bPause = false;
    65 }
    66 
    67 Error World::start()
    68 {
     77  CommandNode* cn = Orxonox::getInstance()->getLocalInput();
     78  cn->addToWorld(this);
     79  cn->enable(true);
     80}
     81
     82ErrorMessage World::start()
     83{
     84  printf("World::start() - starting current World: nr %i\n", this->debugWorldNr);
     85  this->bQuitOrxonox = false;
     86  this->bQuitCurrentGame = false;
    6987  this->mainLoop();
    7088}
    7189
    72 Error World::stop()
    73 {
     90ErrorMessage World::stop()
     91{
     92  printf("World::stop() - got stop signal\n");
    7493  this->bQuitCurrentGame = true;
    75   this->localCamera->setWorld(NULL);
    76   this->~World();
    77 }
    78 
    79 Error World::pause()
     94}
     95
     96ErrorMessage World::pause()
    8097{
    8198  this->isPaused = true;
    8299}
    83100
    84 Error World::resume()
     101ErrorMessage World::resume()
    85102{
    86103  this->isPaused = false;
    87104}
    88105
     106void World::destroy()
     107{
     108
     109}
     110
    89111void World::load()
    90112{
     
    93115      switch(this->debugWorldNr)
    94116        {
     117          /*
     118            this loads the hard-coded debug world. this only for simplicity and will be
     119            removed by a reald world-loader, which interprets a world-file.
     120            if you want to add an own debug world, just add a case DEBUG_WORLD_[nr] and
     121            make whatever you want...
     122           */
    95123        case DEBUG_WORLD_0:
    96124          {
     
    98126            this->pathnodes = new Vector[6];
    99127            this->pathnodes[0] = Vector(0, 0, 0);
    100             this->pathnodes[1] = Vector(-100, 40, 0);
    101             this->pathnodes[2] = Vector(-100, 140, 0);
    102             this->pathnodes[3] = Vector(0, 180, 0);
    103             this->pathnodes[4] = Vector(100, 140, 0);
    104             this->pathnodes[5] = Vector(100, 40, 0);
     128            this->pathnodes[1] = Vector(1000, 0, 0);
     129            //      this->pathnodes[2] = Vector(-100, 140, 0);
     130            //      this->pathnodes[3] = Vector(0, 180, 0);
     131            //      this->pathnodes[4] = Vector(100, 140, 0);
     132            //      this->pathnodes[5] = Vector(100, 40, 0);
    105133           
    106134            // create the tracks
    107             this->tracklen = 6;
    108             this->track = new Track[6];
     135            this->tracklen = 2;
     136            this->track = new Track[2];
    109137            for( int i = 0; i < this->tracklen; i++)
    110138              {
    111139                this->track[i] = Track( i, (i+1)%this->tracklen, &this->pathnodes[i], &this->pathnodes[(i+1)%this->tracklen]);
    112140              }
    113            
     141            // !\todo old track-system has to be removed
     142
    114143            // create a player
    115             //WorldEntity* myPlayer = (WorldEntity*) this->spawn<Player>();
    116144            WorldEntity* myPlayer = new Player();
    117145            this->spawn(myPlayer);
     
    120148            // bind input
    121149            Orxonox *orx = Orxonox::getInstance();
    122             orx->get_localinput()->bind (myPlayer);
     150            orx->getLocalInput()->bind (myPlayer);
    123151           
    124152            // bind camera
    125153            this->localCamera = new Camera(this);
    126154            this->getCamera()->bind (myPlayer);
     155
     156            Placement* plc = new Placement;
     157            plc->r = Vector(100, 10, 10);
     158            plc->w = Quaternion();
     159            WorldEntity* env = new Environment();
     160            this->spawn(env, plc);
     161
    127162            break;
    128163          }
     
    145180                this->track[i] = Track( i, (i+1)%this->tracklen, &this->pathnodes[i], &this->pathnodes[(i+1)%this->tracklen]);
    146181              }
    147            
     182
    148183            // create a player
    149             //WorldEntity* myPlayer = (WorldEntity*) this->spawn<Player>();
    150184            WorldEntity* myPlayer = new Player();
    151185            this->spawn(myPlayer);
    152             this->localPlayer = myPlayer;
     186            this->localPlayer = myPlayer;           
    153187           
    154188            // bind input
    155189            Orxonox *orx = Orxonox::getInstance();
    156             orx->get_localinput()->bind (myPlayer);
     190            orx->getLocalInput()->bind (myPlayer);
    157191           
    158192            // bind camera
     
    169203
    170204    }
     205
     206  // initialize debug coord system
     207  objectList = glGenLists(1);
     208  glNewList (objectList, GL_COMPILE);
     209  glLoadIdentity();
     210  glColor3f(1.0,0,0);
     211  glBegin(GL_QUADS);
     212
     213  int sizeX = 100;
     214  int sizeY = 80;
     215  float length = 1000;
     216  float width = 200;
     217  float widthX = float (length /sizeX);
     218  float widthY = float (width /sizeY);
     219 
     220  float height [sizeX][sizeY];
     221  Vector normal_vectors[sizeX][sizeY];
     222 
     223 
     224  for ( int i = 0; i<sizeX-1; i+=1)
     225    for (int j = 0; j<sizeY-1;j+=1)
     226      //height[i][j] = rand()/20046 + (j-25)*(j-25)/30;
     227#ifdef __WIN32__
     228      height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5;
     229#else
     230      height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5;
     231#endif
     232
     233  //Die Hügel ein wenig glätten
     234  for (int h=1; h<2;h++)
     235    for (int i=1;i<sizeX-2 ;i+=1 )
     236      for(int j=1;j<sizeY-2;j+=1)
     237        height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4;
     238 
     239  //Berechnung von normalen Vektoren
     240
     241  for(int i=1;i<sizeX-2;i+=1)
     242    for(int j=1;j<sizeY-2 ;j+=1)
     243      {
     244        Vector v1 = Vector (widthX*(1),      widthY*(j)  ,      height[i][j]);
     245        Vector v2 = Vector (widthX*(i-1),    widthY*(j)  ,      height[i-1][j]);
     246        Vector v3 = Vector (widthX*(i),      widthY*(j+1),      height[i][j+1]);
     247        Vector v4 = Vector (widthX*(i+1),    widthY*(j),        height[i+1][j]);
     248        Vector v5 = Vector (widthX*(i),      widthY*(j-1),      height[i][j-1]);
     249       
     250        Vector c1 = v2 - v1;
     251        Vector c2 = v3 - v1;
     252        Vector c3=  v4 - v1;
     253        Vector c4 = v5 - v1;
     254        Vector zero = Vector (0,0,0);
     255        normal_vectors[i][j]=c1.cross(v4-v2)+c2.cross(v1-v3)+c3.cross(v2-v4)+c4.cross(v3-v1);
     256        normal_vectors[i][j].normalize();
     257      }
     258
     259  int snowheight=3;
     260  for ( int i = 0; i<sizeX; i+=1)
     261    for (int j = 0; j<sizeY;j+=1)
     262      {   
     263        Vector v1 = Vector (widthX*(i),      widthY*(j)  -width/2,      height[i][j]-20 );
     264        Vector v2 = Vector (widthX*(i+1),    widthY*(j)  -width/2,      height[i+1][j]-20);
     265        Vector v3 = Vector (widthX*(i+1),    widthY*(j+1)-width/2,    height[i+1][j+1]-20);
     266        Vector v4 = Vector (widthX*(i),      widthY*(j+1)-width/2,    height[i][j+1]-20);
     267        float a[3];
     268        if(height[i][j]<snowheight){
     269          a[0]=0;
     270          a[1]=1.0-height[i][j]/10-.3;
     271          a[2]=0;
     272          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     273        }
     274        else{
     275            a[0]=1.0;
     276            a[1]=1.0;
     277            a[2]=1.0;
     278            glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     279           
     280        }
     281        glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z);
     282        glVertex3f(v1.x, v1.y, v1.z);
     283        if(height[i+1][j]<snowheight){
     284          a[0]=0;
     285          a[1] =1.0-height[i+1][j]/10-.3;
     286          a[2]=0;
     287          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     288        }
     289        else{
     290          a[0]=1.0;
     291          a[1]=1.0;
     292          a[2]=1.0;
     293          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     294         
     295        }
     296        glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z);
     297        glVertex3f(v2.x, v2.y, v2.z);
     298        if(height[i+1][j+1]<snowheight){
     299          a[0]=0;
     300          a[1] =1.0-height[i+1][j+1]/10-.3;
     301          a[2]=0;
     302          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     303        }
     304        else{
     305          a[0]=1.0;
     306          a[1]=1.0;
     307          a[2]=1.0;
     308          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     309         
     310         
     311        }
     312        glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z);
     313        glVertex3f(v3.x, v3.y, v3.z);
     314        if(height[i][j+1]<snowheight){
     315          a[0]=0;
     316          a[1] =1.0-height[i+1][j+1]/10-.3;
     317          a[2]=0;
     318          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     319        }
     320        else{
     321          a[0]=1.0;
     322          a[1]=1.0;
     323          a[2]=1.0;
     324          glMaterialfv(GL_FRONT,GL_DIFFUSE,a);
     325        }
     326        glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z);
     327        glVertex3f(v4.x, v4.y, v4.z);
     328       
     329      }
     330  glEnd();
     331  /* 
     332  glBegin(GL_LINES);
     333  for( float x = -128.0; x < 128.0; x += 25.0)
     334    {
     335      for( float y = -128.0; y < 128.0; y += 25.0)
     336        {
     337          glColor3f(1,0,0);
     338          glVertex3f(x,y,-128.0);
     339          glVertex3f(x,y,0.0);
     340          glColor3f(0.5,0,0);
     341          glVertex3f(x,y,0.0);
     342          glVertex3f(x,y,128.0);
     343        }
     344    }
     345  for( float y = -128.0; y < 128.0; y += 25.0)
     346    {
     347      for( float z = -128.0; z < 128.0; z += 25.0)
     348        {
     349          glColor3f(0,1,0);
     350          glVertex3f(-128.0,y,z);
     351          glVertex3f(0.0,y,z);
     352          glColor3f(0,0.5,0);
     353          glVertex3f(0.0,y,z);
     354          glVertex3f(128.0,y,z);
     355        }
     356    }
     357  for( float x = -128.0; x < 128.0; x += 25.0)
     358    {
     359      for( float z = -128.0; z < 128.0; z += 25.0)
     360        {
     361          glColor3f(0,0,1);
     362          glVertex3f(x,-128.0,z);
     363          glVertex3f(x,0.0,z);
     364          glColor3f(0,0,0.5);
     365          glVertex3f(x,0.0,z);
     366          glVertex3f(x,128.0,z);
     367        }
     368     
     369    }
     370  */ 
     371  //draw track
     372  glBegin(GL_LINES);
     373  glColor3f(0,1,1);
     374  for( int i = 0; i < tracklen; i++)
     375    {
     376      glVertex3f(pathnodes[i].x,pathnodes[i].y,pathnodes[i].z);
     377      glVertex3f(pathnodes[(i+1)%tracklen].x,pathnodes[(i+1)%tracklen].y,pathnodes[(i+1)%tracklen].z);
     378    }
     379  glEnd();
     380  glEndList();
    171381}
    172382
     
    181391void World::collide ()
    182392{
    183   List<WorldEntity> *a, *b;
     393  /*
     394  List *a, *b;
    184395  WorldEntity *aobj, *bobj;
    185  
    186   a = entities->get_next();
     396   
     397  a = entities;
    187398 
    188399  while( a != NULL)
    189400    {
    190       aobj = a->get_object();
     401      aobj = a->nextElement();
    191402      if( aobj->bCollide && aobj->collisioncluster != NULL)
    192403        {
    193           b = a->get_next();
     404          b = a->nextElement();
    194405          while( b != NULL )
    195406            {
    196               bobj = b->get_object();
     407              bobj = b->nextElement();
    197408              if( bobj->bCollide && bobj->collisioncluster != NULL )
    198409                {
     
    206417                  }
    207418                }
    208               b = b->get_next();
     419              b = b->nextElement();
    209420            }
    210421        }
    211       a = a->get_next();
    212     }
     422      a = a->enumerate();
     423    }
     424  */
    213425}
    214426
     
    221433 
    222434  // draw entities
    223   List<WorldEntity> *l;
    224435  WorldEntity* entity;
    225436 
    226   l = entities->get_next(); 
    227   while( l != NULL )
     437  entity = this->entities->enumerate();
     438  while( entity != NULL )
    228439    {
    229       entity = l->get_object();
    230440      if( entity->bDraw ) entity->draw();
    231       l = l->get_next();
     441      entity = this->entities->nextElement();
    232442    }
    233443 
    234444 
    235445  // draw debug coord system
    236   glLoadIdentity();
    237  
    238 
    239   glBegin(GL_LINES);
    240  
    241   for( float x = -128.0; x < 128.0; x += 25.0)
    242     {
    243       for( float y = -128.0; y < 128.0; y += 25.0)
    244         {
    245           glColor3f(1,0,0);
    246           glVertex3f(x,y,-128.0);
    247           glVertex3f(x,y,0.0);
    248           glColor3f(0.5,0,0);
    249           glVertex3f(x,y,0.0);
    250           glVertex3f(x,y,128.0);
    251         }
    252     }
    253   for( float y = -128.0; y < 128.0; y += 25.0)
    254     {
    255       for( float z = -128.0; z < 128.0; z += 25.0)
    256         {
    257           glColor3f(0,1,0);
    258           glVertex3f(-128.0,y,z);
    259           glVertex3f(0.0,y,z);
    260           glColor3f(0,0.5,0);
    261           glVertex3f(0.0,y,z);
    262           glVertex3f(128.0,y,z);
    263         }
    264     }
    265   for( float x = -128.0; x < 128.0; x += 25.0)
    266     {
    267       for( float z = -128.0; z < 128.0; z += 25.0)
    268         {
    269           glColor3f(0,0,1);
    270           glVertex3f(x,-128.0,z);
    271           glVertex3f(x,0.0,z);
    272           glColor3f(0,0,0.5);
    273           glVertex3f(x,0.0,z);
    274           glVertex3f(x,128.0,z);
    275         }
    276      
    277     }
    278  
    279   //draw track
    280   glColor3f(0,1,1);
    281   for( int i = 0; i < tracklen; i++)
    282     {
    283       glVertex3f(pathnodes[i].x,pathnodes[i].y,pathnodes[i].z);
    284       glVertex3f(pathnodes[(i+1)%tracklen].x,pathnodes[(i+1)%tracklen].y,pathnodes[(i+1)%tracklen].z);
    285     }
    286   glEnd();
     446  glCallList (objectList);
     447
     448
    287449}
    288450
     
    297459void World::update ()
    298460{
    299   List<WorldEntity> *l;
     461  //List<WorldEntity> *l;
    300462  WorldEntity* entity;
    301463  Location* loc;
     
    303465  Uint32 t;
    304466 
    305   l = entities->get_next(); 
    306   while( l != NULL )
     467  //  l = entities->enumerate();
     468  entity = this->entities->enumerate();
     469  while( entity != NULL )
    307470    {
    308       entity = l->get_object();
     471
    309472     
    310473      if( !entity->isFree() )
    311474        {
    312           loc = entity->get_location();
    313           plc = entity->get_placement();
     475          loc = entity->getLocation();
     476          plc = entity->getPlacement();
    314477          t = loc->part;
    315478         
     
    318481            {
    319482              printf("An entity is out of the game area\n");
    320               entity->left_world ();
     483              entity->leftWorld ();
    321484            }
    322485          else
    323486            {
    324               while( track[t].map_coords( loc, plc) )
     487              while( track[t].mapCoords( loc, plc) )
    325488                {
    326                   track[t].post_leave (entity);
     489                  track[t].postLeave (entity);
    327490                  if( loc->part >= tracklen )
    328491                    {
    329492                      printf("An entity has left the game area\n");
    330                       entity->left_world ();
     493                      entity->leftWorld ();
    331494                      break;
    332495                    }
    333                   track[loc->part].post_enter (entity);
     496                  track[loc->part].postEnter (entity);
    334497                }
    335498            }
     
    337500      else
    338501        {
    339           /* TO DO: implement check whether this particular free entity
     502          /* \todo: implement check whether this particular free entity
    340503             is out of the game area
    341              TO DO: call function to notify the entity that it left
     504             \todo: call function to notify the entity that it left
    342505             the game area
    343506          */
    344507        }
    345508     
    346       l = l->get_next();
     509      entity = entities->nextElement();
    347510    }
    348511 
     
    353516    \param deltaT: the time passed since the last frame in milliseconds
    354517*/
    355 void World::time_slice (Uint32 deltaT)
    356 {
    357   List<WorldEntity> *l;
     518void World::timeSlice (Uint32 deltaT)
     519{
     520  //List<WorldEntity> *l;
    358521  WorldEntity* entity;
    359   float seconds = deltaT;
    360  
    361   seconds /= 1000;
    362  
    363   l = entities->get_next(); 
    364   while( l != NULL)
     522  float seconds = deltaT / 1000.0;
     523 
     524  entity = entities->enumerate();
     525  while( entity != NULL)
    365526    {
    366       entity = l->get_object();
    367527      entity->tick (seconds);
    368       l = l->get_next();
    369     }
    370  
    371   for( int i = 0; i < tracklen; i++) track[i].tick (seconds);
     528      entity = entities->nextElement();
     529    }
     530
     531  //for( int i = 0; i < tracklen; i++) track[i].tick (seconds);
    372532}
    373533
     
    387547   Camera Placement
    388548*/
    389 void World::calc_camera_pos (Location* loc, Placement* plc)
    390 {
    391   track[loc->part].map_camera (loc, plc);
     549void World::calcCameraPos (Location* loc, Placement* plc)
     550{
     551  track[loc->part].mapCamera (loc, plc);
    392552}
    393553
     
    403563}
    404564
     565
     566
     567/**
     568   \brief function to put your own debug stuff into it. it can display informations about
     569   the current class/procedure
     570*/
    405571void World::debug()
    406572{
    407   List<WorldEntity> *l;
     573  //List<WorldEntity> *l;
    408574  WorldEntity* entity;
    409575 
    410576  printf("counting all entities\n");
    411   l = entities->get_next(); 
    412   while( l != NULL )
     577  printf("World::debug() - enumerate()\n");
     578  entity = entities->enumerate(); 
     579  while( entity != NULL )
    413580    {
    414       entity = l->get_object();
    415581      if( entity->bDraw ) printf("got an entity\n");
    416       l = l->get_next();
    417     }
    418 }
    419 
    420 
     582      entity = entities->nextElement();
     583    }
     584}
     585
     586
     587/*
     588  \brief main loop of the world: executing all world relevant function
     589
     590  in this loop we synchronize (if networked), handle input events, give the heart-beat to
     591  all other member-entities of the world (tick to player, enemies etc.), checking for
     592  collisions drawing everything to the screen.
     593*/
    421594void World::mainLoop()
    422595{
    423596  this->lastFrame = SDL_GetTicks();
    424   this->bQuitOrxonox = false;
    425   this->bQuitCurrentGame = false;
    426   printf("World|Entering main loop\n");
    427   while(!this->bQuitOrxonox && !this->bQuitCurrentGame) /* pause pause pause ?!?!?*/
    428     {
    429       //debug routine
    430       //debug();
     597  printf("World::mainLoop() - Entering main loop\n");
     598  while( !this->bQuitOrxonox && !this->bQuitCurrentGame) /* \todo implement pause */
     599    {
    431600      // Network
    432601      synchronize();
    433602      // Process input
    434       handle_input();
     603      handleInput();
     604      if( this->bQuitCurrentGame || this->bQuitOrxonox)
     605        {
     606          printf("World::mainLoop() - leaving loop earlier...\n");
     607          break;
     608        }
    435609      // Process time
    436       time_slice();
     610      timeSlice();
    437611      // Process collision
    438612      collision();
    439613      // Draw
    440614      display();
    441     }
    442   printf("World|Exiting the main loop\n");
     615 
     616      for(int i = 0; i < 10000000; i++) {}
     617    }
     618  printf("World::mainLoop() - Exiting the main loop\n");
    443619}
    444620
     
    454630/**
    455631   \brief run all input processing
    456 */
    457 void World::handle_input ()
     632
     633   the command node is the central input event dispatcher. the node uses the even-queue from
     634   sdl and has its own event-passing-queue.
     635*/
     636void World::handleInput ()
    458637{
    459638  // localinput
    460   Orxonox::getInstance()->get_localinput()->process();
     639  CommandNode* cn = Orxonox::getInstance()->getLocalInput();
     640  cn->process();
    461641  // remoteinput
    462642}
     
    464644/**
    465645   \brief advance the timeline
    466 */
    467 void World::time_slice ()
     646
     647   this calculates the time used to process one frame (with all input handling, drawing, etc)
     648   the time is mesured in ms and passed to all world-entities and other classes that need
     649   a heart-beat.
     650*/
     651void World::timeSlice ()
    468652{
    469653  Uint32 currentFrame = SDL_GetTicks();
     
    471655    {
    472656      Uint32 dt = currentFrame - this->lastFrame;
    473       /*
     657     
    474658      if(dt > 0)
    475659        {
     
    479663      else
    480664        {
    481           printf("fps = 1000\n");
    482         }
    483       */
    484       this->time_slice (dt);
     665          /* the frame-rate is limited to 100 frames per second, all other things are for
     666             nothing.
     667          */
     668          printf("fps = 1000 - frame rate is adjusted\n");
     669          SDL_Delay(10);
     670          dt = 10;
     671        }
     672      this->timeSlice (dt);
    485673      this->update ();
    486       this->localCamera->time_slice (dt);
     674      this->localCamera->timeSlice(dt);
    487675    }
    488676  this->lastFrame = currentFrame;
    489677}
    490678
     679
    491680/**
    492681   \brief compute collision detection
     
    497686}
    498687
    499 /**
    500    \brief handle keyboard commands that are not meant for WorldEntities
    501    \param cmd: the command to handle
    502    \return true if the command was handled by the system or false if it may be passed to the WorldEntities
    503 */
    504 bool World::system_command (Command* cmd)
    505 {
    506   if( !strcmp( cmd->cmd, "quit"))
    507     {
    508       if( !cmd->bUp) this->bQuitOrxonox = true;
    509       return true;
    510     }
    511   return false;
    512 }
    513 
    514 /**
    515         \brief render the current frame
     688
     689/**
     690   \brief render the current frame
     691   
     692   clear all buffers and draw the world
    516693*/
    517694void World::display ()
     
    528705}
    529706
     707/**
     708   \brief give back active camera
     709   
     710   this passes back the actualy active camera
     711   \todo ability to define more than one camera or camera-places
     712*/
    530713Camera* World::getCamera()
    531714{
     
    534717
    535718
     719/**
     720   \brief add and spawn a new entity to this world
     721   \param entity to be added
     722*/
    536723void World::spawn(WorldEntity* entity)
    537724{
     
    539726  Location* loc = NULL;
    540727  WorldEntity* owner;
    541   //T* entity = new T();
    542   entities->add (entity, LIST_ADD_NEXT);
    543   //if( loc == NULL)
    544   //{
    545       zeroloc.dist = 0;
    546       zeroloc.part = 0;
    547       zeroloc.pos = Vector();
    548       zeroloc.rot = Quaternion();
    549       loc = &zeroloc;
    550       //}
     728
     729  entities->add (entity);
     730  zeroloc.dist = 0;
     731  zeroloc.part = 0;
     732  zeroloc.pos = Vector();
     733  zeroloc.rot = Quaternion();
     734  loc = &zeroloc;
    551735  entity->init (loc, owner);
    552736  if (entity->bFree)
    553737    {
    554       this->track[loc->part].map_coords( loc, entity->get_placement());
    555     }
    556   entity->post_spawn ();
     738      this->track[loc->part].mapCoords( loc, entity->getPlacement());
     739    }
     740  entity->postSpawn ();
     741}
     742
     743
     744/**
     745   \brief add and spawn a new entity to this world
     746   \param entity to be added
     747   \param location where to add
     748*/
     749void World::spawn(WorldEntity* entity, Location* loc)
     750{
     751  Location zeroLoc;
     752  WorldEntity* owner;
     753  this->entities->add (entity);
     754  if( loc == NULL)
     755    {
     756      zeroLoc.dist = 0;
     757      zeroLoc.part = 0;
     758      zeroLoc.pos = Vector();
     759      zeroLoc.rot = Quaternion();
     760      loc = &zeroLoc;
     761    }
     762  entity->init (loc, owner);
     763  if (entity->bFree)
     764    {
     765      this->track[loc->part].mapCoords( loc, entity->getPlacement());
     766    }
     767  entity->postSpawn ();
    557768  //return entity;
    558769}
     770
     771
     772/**
     773   \brief add and spawn a new entity to this world
     774   \param entity to be added
     775   \param place where to be added
     776*/
     777void World::spawn(WorldEntity* entity, Placement* plc)
     778{
     779  Placement zeroPlc;
     780  WorldEntity* owner;
     781  if( plc == NULL)
     782    {
     783      zeroPlc.r = Vector();
     784      zeroPlc.w = Quaternion();
     785      plc = &zeroPlc;
     786    }
     787  this->entities->add (entity);
     788  entity->init (plc, owner);
     789  entity->postSpawn ();
     790  //return entity;
     791}
     792
     793
     794/*
     795  \brief commands that the world must catch
     796  \returns false if not used by the world
     797*/
     798bool World::command(Command* cmd)
     799{
     800  return false;
     801}
  • orxonox/branches/buerli/src/world.h

    r2707 r3238  
    44*/
    55
    6 #ifndef WORLD_H
    7 #define WORLD_H
     6#ifndef _WORLD_H
     7#define _WORLD_H
    88
    99#include "stdincl.h"
     
    2222  World (char* name);
    2323  World (int worldID);
    24   ~World ();
     24  virtual ~World ();
    2525
    2626  template<typename T>
    27     T* spawn(Location* loc, WorldEntity* owner);        // template to be able to spawn any derivation of WorldEntity
     27    T* spawn (Location* loc, WorldEntity* owner);       // template to be able to spawn any derivation of WorldEntity
    2828  template<typename T>
    29     T* spawn(Placement* plc, WorldEntity* owner);
     29    T* spawn (Placement* plc, WorldEntity* owner);
    3030 
    31   virtual Error init();
    32   virtual Error start();
    33   virtual Error stop();
    34   virtual Error pause();
    35   virtual Error resume();
     31  virtual ErrorMessage init ();
     32  virtual ErrorMessage start ();
     33  virtual ErrorMessage stop ();
     34  virtual ErrorMessage pause ();
     35  virtual ErrorMessage resume ();
    3636
    37   virtual void load();
     37  virtual void load ();
     38  virtual void destroy ();
    3839
    39   void time_slice (Uint32 deltaT);
     40  void timeSlice (Uint32 deltaT);
    4041  void collide ();
    4142  void draw ();
    4243  void update ();       // maps Locations to Placements
    43   void calc_camera_pos (Location* loc, Placement* plc);
     44  void calcCameraPos (Location* loc, Placement* plc);
    4445       
    4546  void unload ();
     47  bool command (Command* cmd);
    4648 
    47   void setTrackLen(Uint32 tracklen);
    48   int getTrackLen();
    49   bool system_command (Command* cmd);
    50   Camera* getCamera();
    51   //private:
     49  void setTrackLen (Uint32 tracklen);
     50  int getTrackLen ();
     51  //bool system_command (Command* cmd);
     52  Camera* getCamera ();
    5253
    53   void spawn(WorldEntity* entity);
     54  void spawn (WorldEntity* entity);
     55  void spawn (WorldEntity* entity, Location* loc);
     56  void spawn (WorldEntity* entity, Placement* plc);
    5457
    55   List<WorldEntity>* entities;
     58  tList<WorldEntity>* entities;
    5659 
    5760  // base level data
     
    6972  char* worldName;
    7073  int debugWorldNr;
     74  GLuint objectList;
    7175
    7276  WorldEntity* localPlayer;
    7377 
    74   void mainLoop();
    75   void synchronize();
    76   void handle_input();
    77   void time_slice();
    78   void collision();
    79   void display();
    80   void debug();
     78  void mainLoop ();
     79  void synchronize ();
     80  void handleInput ();
     81  void timeSlice ();
     82  void collision ();
     83  void display ();
     84  void debug ();
    8185};
    8286
    83 /**
    84     \brief spawn a new WorldEntity at a Location
    85     \param loc: the Location where the Entity should be spawned
    86     \param owner: a pointer to the parent of the Entity
    87     \return a pointer to the new WorldEntity or NULL if there was an error
    88    
    89     You can use this function to spawn any derivation of WorldEntity you want, just specify the desired
    90     class within the template specification brackets. Do not attempt to spawn any classes that have NOT been
    91     derived from WorldEntity, you won't even be able to compile the code. Note that this version of spawn()
    92     works with both free and bound WorldEntities.
    93 */
    94 template<typename T> T* World::spawn(Location* loc = NULL, WorldEntity* owner = NULL)
    95 {
    96   Location zeroloc;
    97   T* entity = new T();
    98   entities->add ((WorldEntity*)entity, LIST_ADD_NEXT);
    99   if( loc == NULL)
    100     {
    101       zeroloc.dist = 0;
    102       zeroloc.part = 0;
    103       zeroloc.pos = Vector();
    104       zeroloc.rot = Quaternion();
    105       loc = &zeroloc;
    106     }
    107   entity->init (loc, owner);
    108   if (entity->bFree)
    109     {
    110       track[loc->part].map_coords( loc, entity->get_placement());
    111     }
    112   entity->post_spawn ();
    113   return entity;
    114 }
    115 
    116 /**
    117     \brief spawn a new WorldEntity at a Placement
    118     \param lplc: the placement where the Entity should be spawned
    119     \param owner: a pointer to the parent of the Entity
    120     \return a pointer to the new WorldEntity or NULL if there was an error
    121    
    122     You can use this function to spawn any FREE derivation of WorldEntity you want, just specify the desired
    123     class within the template specification brackets. Do not attempt to spawn any classes that have NOT been
    124     derived from WorldEntity, you won't even be able to compile the code. Note that this version of spawn()
    125     works with free WorldEntities only, you will provoke an error message if you try to spawn a bound Entity with
    126     a Placement.
    127 */
    128 template<typename T> T* World::spawn(Placement* plc, WorldEntity* owner = NULL)
    129 {
    130   T* entity = new T();
    131   entities->add ((WorldEntity*)entity, LIST_ADD_NEXT);
    132   entity->init (plc, owner);
    133   if (!entity->bFree)
    134     {
    135       printf("Can't spawn unfree entity with placement\n");
    136       entities->remove( (WorldEntity*)entity, LIST_FIND_FW);
    137       return NULL;
    138     }
    139   entity->post_spawn ();
    140   return entity;
    141 }
    142 
    143 #endif
     87#endif /* _WORLD_H */
  • orxonox/branches/buerli/src/world_entity.cc

    r2190 r3238  
    3636WorldEntity::WorldEntity (bool isFree) : bFree(isFree)
    3737{
    38         collisioncluster = NULL;
    39         owner = NULL;
     38  this->bDraw = true;
     39  collisioncluster = NULL;
     40  owner = NULL;
    4041}
    4142
     
    4546WorldEntity::~WorldEntity ()
    4647{
    47         if( collisioncluster != NULL) delete collisioncluster;
     48  if( collisioncluster != NULL) delete collisioncluster;
    4849}
    4950
    5051/**
    51         \brief get the Location of the WorldEntity
    52         \return a pointer to location
     52   \brief get the Location of the WorldEntity
     53   \return a pointer to location
    5354*/
    54 Location* WorldEntity::get_location ()
     55Location* WorldEntity::getLocation ()
    5556{
    56         return &loc;
     57  return &loc;
    5758}
    5859
    5960/**
    60         \brief get the Placement of the WorldEntity
    61         \return a pointer to placement
     61   \brief get the Placement of the WorldEntity
     62   \return a pointer to placement
    6263*/
    63 Placement* WorldEntity::get_placement ()
     64Placement* WorldEntity::getPlacement ()
    6465{
    65         return &place;
     66  return &place;
    6667}
    6768
    6869/**
    69         \brief query whether the WorldEntity in question is free
    70         \return true if the WorldEntity is free or false if it isn't
     70   \brief query whether the WorldEntity in question is free
     71   \return true if the WorldEntity is free or false if it isn't
    7172*/
    7273bool WorldEntity::isFree ()
     
    7677
    7778/**
    78         \brief set the WorldEntity's collision hull
    79         \param newhull: a pointer to a completely assembled CollisionCluster
    80        
    81         Any previously assigned collision hull will be deleted on reassignment
     79   \brief set the WorldEntity's collision hull
     80   \param newhull: a pointer to a completely assembled CollisionCluster
     81   
     82   Any previously assigned collision hull will be deleted on reassignment
    8283*/
    83 void WorldEntity::set_collision (CollisionCluster* newhull)
     84void WorldEntity::setCollision (CollisionCluster* newhull)
    8485{
    85         if( newhull == NULL) return;
    86         if( collisioncluster != NULL) delete collisioncluster;
    87         collisioncluster = newhull;
     86  if( newhull == NULL) return;
     87  if( collisioncluster != NULL) delete collisioncluster;
     88  collisioncluster = newhull;
    8889}
    8990
    9091/**
    91         \brief this method is called every frame
    92         \param time: the time in seconds that has passed since the last tick
    93        
    94         Handle all stuff that should update with time inside this method (movement, animation, etc.)
     92   \brief this method is called every frame
     93   \param time: the time in seconds that has passed since the last tick
     94   
     95   Handle all stuff that should update with time inside this method (movement, animation, etc.)
    9596*/
    9697void WorldEntity::tick(float time)
     
    100101/**
    101102   \brief the entity is drawn onto the screen with this function
    102 
     103   
    103104   This is a central function of an entity: call it to let the entity painted to the screen. Just override this function with whatever you want to be drawn.
    104105*/
     
    108109
    109110/**
    110         \brief this function is called, when two entities collide
    111         \param other: the world entity with whom it collides
    112         \param ownhitflags: flags to the CollisionCluster subsections that registered an impact
    113         \param otherhitflags: flags to the CollisionCluster subsections of the other entity that registered an impact
     111   \brief this function is called, when two entities collide
     112   \param other: the world entity with whom it collides
     113   \param ownhitflags: flags to the CollisionCluster subsections that registered an impact
     114   \param otherhitflags: flags to the CollisionCluster subsections of the other entity that registered an impact
    114115
    115         Implement behaviour like damage application or other miscellaneous collision stuff in this function
     116   Implement behaviour like damage application or other miscellaneous collision stuff in this function
    116117*/
    117118void WorldEntity::collide(WorldEntity* other, Uint32 ownhitflags, Uint32 otherhitflags) {}
     
    135136
    136137/**
    137         \brief basic initialisation for bound Entities
     138   \brief basic initialisation for bound Entities
    138139*/
    139140void WorldEntity::init( Location* spawnloc, WorldEntity* spawnowner)
    140141{
    141         loc = *spawnloc;
    142         owner = spawnowner;
     142  loc = *spawnloc;
     143  owner = spawnowner;
    143144}
    144145
    145146/**
    146         \brief basic initialisation for free Entities
     147   \brief basic initialisation for free Entities
    147148*/
    148149void WorldEntity::init( Placement* spawnplc, WorldEntity* spawnowner)
    149150{
    150         place = *spawnplc;
    151         owner = spawnowner;
     151  place = *spawnplc;
     152  owner = spawnowner;
    152153}
    153154
    154155/**
    155         \brief this is called immediately after the Entity has been constructed and initialized
    156        
    157         Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here.
    158         DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted.
     156   \brief this is called immediately after the Entity has been constructed and initialized
     157   
     158   Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here.
     159   DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted.
    159160*/
    160 void WorldEntity::post_spawn ()
     161void WorldEntity::postSpawn ()
    161162{
    162163}
    163164
    164165/**
    165         \brief this handles incoming command messages
    166         \param cmd: a pointer to the incoming Command structure
    167        
    168         Put all code that handles Command messages here, this will mainly be called by the assigned CommandNode but can also be used
    169         to send commands from one WorldEntity to another.
     166   \brief this handles incoming command messages
     167   \param cmd: a pointer to the incoming Command structure
     168   
     169   Put all code that handles Command messages here, this will mainly be called by the assigned CommandNode but can also be used
     170   to send commands from one WorldEntity to another.
    170171*/
    171172void WorldEntity::command (Command* cmd)
     
    174175
    175176/**
    176         \brief this is called by the local Camera to determine the point it should look at on the WorldEntity
    177         \param locbuf: a pointer to the buffer to fill with a location to look at
     177   \brief this is called by the local Camera to determine the point it should look at on the WorldEntity
     178   \param locbuf: a pointer to the buffer to fill with a location to look at
    178179       
    179         You may put any Location you want into locbuf, the Camera will determine via the corresponding Track how
    180         to look at the location you return with this.
     180   You may put any Location you want into locbuf, the Camera will determine via the corresponding Track how
     181   to look at the location you return with this.
    181182*/
    182 void WorldEntity::get_lookat (Location* locbuf)
     183void WorldEntity::getLookat (Location* locbuf)
    183184{
    184185}
    185186
    186187/**
    187         \brief this method is called by the world if the WorldEntity leaves valid gamespace
    188        
    189         For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a
    190         place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy).
     188   \brief this method is called by the world if the WorldEntity leaves valid gamespace
     189   
     190   For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a
     191   place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy).
    191192*/
    192 void WorldEntity::left_world ()
     193void WorldEntity::leftWorld ()
    193194{
    194195}
  • orxonox/branches/buerli/src/world_entity.h

    r2551 r3238  
    44*/
    55
    6 #ifndef WORLD_ENTITY_H
    7 #define WORLD_ENTITY_H
     6#ifndef _WORLD_ENTITY_H
     7#define _WORLD_ENTITY_H
    88
    99#include "stdincl.h"
     
    1818 public:
    1919  WorldEntity (bool isFree = false);
    20   ~WorldEntity ();
     20  virtual ~WorldEntity ();
    2121 
    22   Location* get_location ();
    23   Placement* get_placement ();
    24   void set_collision (CollisionCluster* newhull);
     22  Location* getLocation ();
     23  Placement* getPlacement ();
     24  void setCollision (CollisionCluster* newhull);
    2525 
    2626  bool isFree ();
     
    2929  //void removeAbility(Ability* ability);
    3030 
    31   virtual void post_spawn ();
     31  virtual void postSpawn ();
    3232  virtual void tick (float time);
    3333  virtual void hit (WorldEntity* weapon, Vector loc);
     
    3737 
    3838  virtual void draw ();
    39   virtual void get_lookat (Location* locbuf);
     39  virtual void getLookat (Location* locbuf);
    4040 
    41   virtual void left_world ();
     41  virtual void leftWorld ();
    4242 
    4343 private:
     
    5555};
    5656
    57 #endif
     57#endif /* _WORLD_ENTITY_H */
Note: See TracChangeset for help on using the changeset viewer.