You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(11) |
Apr
(47) |
May
(14) |
Jun
|
Jul
(73) |
Aug
(4) |
Sep
(2) |
Oct
(60) |
Nov
(48) |
Dec
(66) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
(1) |
Mar
(27) |
Apr
(82) |
May
(89) |
Jun
(91) |
Jul
(44) |
Aug
(53) |
Sep
(113) |
Oct
(20) |
Nov
(37) |
Dec
(10) |
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
(2) |
May
(21) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2009 |
Jan
(76) |
Feb
(89) |
Mar
(52) |
Apr
(11) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(27) |
2010 |
Jan
(11) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(9) |
Sep
|
Oct
|
Nov
|
Dec
(14) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(2) |
Sep
(11) |
Oct
(3) |
Nov
|
Dec
|
2013 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <eg...@us...> - 2009-01-19 23:50:17
|
Revision: 951 http://opengate.svn.sourceforge.net/opengate/?rev=951&view=rev Author: egore Date: 2009-01-19 23:50:05 +0000 (Mon, 19 Jan 2009) Log Message: ----------- Use symlinks to not disturb SVN more than necessary Modified Paths: -------------- trunk/autogen.sh Modified: trunk/autogen.sh =================================================================== --- trunk/autogen.sh 2009-01-19 23:13:32 UTC (rev 950) +++ trunk/autogen.sh 2009-01-19 23:50:05 UTC (rev 951) @@ -1,4 +1,4 @@ #!/bin/sh libtoolize && -autoreconf -i -f && +autoreconf -i -s -f && ./configure $@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <spo...@us...> - 2009-01-19 23:13:46
|
Revision: 950 http://opengate.svn.sourceforge.net/opengate/?rev=950&view=rev Author: spom_spom Date: 2009-01-19 23:13:32 +0000 (Mon, 19 Jan 2009) Log Message: ----------- next steps of reorganization done. (mesh objects, collision, basic flight). Modified Paths: -------------- trunk/data/materials/simpleHUD.material trunk/data/misc/test.sector trunk/m4/libtool.m4 trunk/m4/ltoptions.m4 trunk/m4/ltsugar.m4 trunk/m4/ltversion.m4 trunk/src/Entity.cpp trunk/src/Entity.h trunk/src/Hud.cpp trunk/src/Makefile.am trunk/src/OpcodeWrapper.cpp trunk/src/OpcodeWrapper.h trunk/src/Opengate.h trunk/src/Sector.cpp trunk/src/Sector.h trunk/src/SectorAvatarObject.cpp trunk/src/SectorAvatarObject.h trunk/src/SectorCollisionObject.h trunk/src/SectorMeshObject.cpp trunk/src/SectorMeshObject.h trunk/src/SectorMovableObject.cpp trunk/src/SectorMovableObject.h trunk/src/SectorObjectVessel.cpp trunk/src/SectorVesselObject.cpp trunk/src/SectorVesselObject.h trunk/src/Station.cpp trunk/src/Station.h trunk/src/UnDockedState.cpp trunk/src/common.h trunk/src/commonWithOgre.cpp trunk/src/commonWithOgre.h Added Paths: ----------- trunk/src/SectorBeaconObject.cpp trunk/src/SectorBeaconObject.h trunk/src/SectorStationObject.cpp trunk/src/SectorStationObject.h Modified: trunk/data/materials/simpleHUD.material =================================================================== --- trunk/data/materials/simpleHUD.material 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/data/materials/simpleHUD.material 2009-01-19 23:13:32 UTC (rev 950) @@ -22,7 +22,9 @@ pass { depth_check off - lighting off + depth_write off + lighting on + scene_blend alpha_blend texture_unit @@ -40,6 +42,7 @@ pass { depth_check on + depth_write on lighting on } } @@ -52,6 +55,7 @@ pass { depth_check on + depth_write on lighting on } } Modified: trunk/data/misc/test.sector =================================================================== --- trunk/data/misc/test.sector 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/data/misc/test.sector 2009-01-19 23:13:32 UTC (rev 950) @@ -7,10 +7,20 @@ <position y="0" x="0" z="-1480"></position> </station> <sectorobject name="ring"> - <position y="100" x="-650" z="800"></position> + <position y="-100" x="0" z="-100"></position> <scale y="35" x="35" z="35"></scale> <entity meshFile="ring.mesh" material-0="ring/main" numSubEntities="1"></entity> </sectorobject> + <sectorobject name="ring1"> + <position y="0" x="0" z="-100"></position> + <scale y="35" x="35" z="35"></scale> + <entity meshFile="ring.mesh" material-0="ring/main" numSubEntities="1"></entity> + </sectorobject> + <sectorobject name="ring2"> + <position y="100" x="0" z="-100"></position> + <scale y="35" x="35" z="35"></scale> + <entity meshFile="ring.mesh" material-0="ring/main" numSubEntities="1"></entity> + </sectorobject> <beacon> <position y="0" x="-650" z="800"></position> </beacon> Modified: trunk/m4/libtool.m4 =================================================================== --- trunk/m4/libtool.m4 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/m4/libtool.m4 2009-01-19 23:13:32 UTC (rev 950) @@ -380,12 +380,12 @@ # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_quote(m4_if([$2], [], + m4_quote(lt_decl_tag_varnames), + m4_quote(m4_shift($@)))), + m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) +m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) @@ -945,10 +945,10 @@ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on + darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? + # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; @@ -990,11 +990,7 @@ _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then + if test "$GCC" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" @@ -1516,7 +1512,7 @@ lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw* | cegcc*) + cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1684,6 +1680,10 @@ # endif #endif +#ifdef __cplusplus +extern "C" void exit (int); +#endif + void fnord() { int i=42;} int main () { @@ -1699,7 +1699,7 @@ else puts (dlerror ()); - return status; + exit (status); }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then @@ -1738,7 +1738,7 @@ lt_cv_dlopen_self=yes ;; - mingw* | pw32* | cegcc*) + mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -2035,7 +2035,6 @@ [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], @@ -2200,14 +2199,14 @@ # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -2230,7 +2229,7 @@ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw* | cegcc*) + mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` @@ -2669,7 +2668,7 @@ version_type=linux need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2693,7 +2692,7 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi - + if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi @@ -2970,7 +2969,6 @@ # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' @@ -3021,12 +3019,6 @@ fi ;; -cegcc) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -3338,7 +3330,7 @@ aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3584,7 +3576,7 @@ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3611,11 +3603,10 @@ fi ;; hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. case $host_cpu in - hppa*64*) + hppa*64*|ia64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' @@ -3713,19 +3704,12 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. + icpc* | ecpc* ) + # Intel C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3891,7 +3875,7 @@ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3907,11 +3891,10 @@ ;; hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. case $host_cpu in - hppa*64*) + hppa*64*|ia64*) # +Z the default ;; *) @@ -3961,7 +3944,7 @@ fi ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -3992,25 +3975,11 @@ linux* | k*bsd*-gnu) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) + icc* | ecc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4192,7 +4161,7 @@ pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; - cygwin* | mingw* | cegcc*) + cygwin* | mingw*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) @@ -4244,7 +4213,7 @@ extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -4331,7 +4300,7 @@ fi ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | pw32*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -4397,9 +4366,6 @@ tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; @@ -4631,7 +4597,6 @@ fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes @@ -4686,7 +4651,7 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -4790,7 +4755,7 @@ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -5575,7 +5540,6 @@ fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -5634,7 +5598,7 @@ esac ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | pw32*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -7019,18 +6983,6 @@ ]) -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - - # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates Modified: trunk/m4/ltoptions.m4 =================================================================== --- trunk/m4/ltoptions.m4 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/m4/ltoptions.m4 2009-01-19 23:13:32 UTC (rev 950) @@ -125,7 +125,7 @@ [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) +*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) Modified: trunk/m4/ltsugar.m4 =================================================================== --- trunk/m4/ltsugar.m4 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/m4/ltsugar.m4 2009-01-19 23:13:32 UTC (rev 950) @@ -1,13 +1,13 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 6 ltsugar.m4 +# serial 5 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) @@ -63,14 +63,14 @@ # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) +[m4_if([$2], [], [], + [m4_if([$4], [], [], + [lt_join(m4_quote(m4_default([$1], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2], + [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]), + [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl +]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) Modified: trunk/m4/ltversion.m4 =================================================================== --- trunk/m4/ltversion.m4 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/m4/ltversion.m4 2009-01-19 23:13:32 UTC (rev 950) @@ -9,15 +9,15 @@ # Generated from ltversion.in. -# serial 3012 ltversion.m4 +# serial 2976 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.2.6]) -m4_define([LT_PACKAGE_REVISION], [1.3012]) +m4_define([LT_PACKAGE_VERSION], [2.2.4]) +m4_define([LT_PACKAGE_REVISION], [1.2976]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.6' -macro_revision='1.3012' +[macro_version='2.2.4' +macro_revision='1.2976' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) Modified: trunk/src/Entity.cpp =================================================================== --- trunk/src/Entity.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Entity.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -136,9 +136,9 @@ MeshEntity::MeshEntity(): Entity(){ baseSize_ = Ogre::Vector3::ZERO; - baseYaw_ = 0; - basePitch_ = 0; - baseRoll_ = 0; + baseYaw_ = 0.0; + basePitch_ = 0.0; + baseRoll_ = 0.0; } MeshEntity::~MeshEntity(){} @@ -146,19 +146,15 @@ void MeshEntity::readPropertiesFromXML( TiXmlHandle & hRoot ){ Entity::readPropertiesFromXML( hRoot ); - readXMLNode< float >( hRoot, "baseyaw", this, &OpenGate::MeshEntity::setBaseYaw, false ); - readXMLNode< float >( hRoot, "basepitch", this, &OpenGate::MeshEntity::setBasePitch, false ); - readXMLNode< float >( hRoot, "baseroll", this, &OpenGate::MeshEntity::setBaseRoll, false ); - + readXMLNode< float >( hRoot, "base_yaw", this, &OpenGate::MeshEntity::setBaseYaw, false ); + readXMLNode< float >( hRoot, "base_pitch", this, &OpenGate::MeshEntity::setBasePitch, false ); + readXMLNode< float >( hRoot, "base_roll", this, &OpenGate::MeshEntity::setBaseRoll, false ); + readXMLNode< float >( hRoot, "base_size", this, &OpenGate::MeshEntity::setBaseSize, false ); + + // readXMLNode< float >( hRoot, "basesize", this, &OpenGate::MeshEntity::setBaseSize, false ); TiXmlElement * pElem; Ogre::Real length = 0; - pElem = hRoot.ChildElement( "size", 0 ).Element(); - if ( pElem ) { - length = toDouble( pElem->FirstChild()->Value() ); - this->setBaseSize( length ); - } - pElem = hRoot.ChildElement( "length", 0 ).Element(); if ( pElem ) length = toDouble( pElem->FirstChild()->Value() ); @@ -170,7 +166,7 @@ pElem = hRoot.ChildElement( "height", 0 ).Element(); if ( pElem ) height = toDouble( pElem->FirstChild()->Value() ); - if ( length > 0 && width > 0 && height > 0 ) this->setBaseSize( width, height, length ); + if ( length > 0 && width > 0 && height > 0 ) this->setBaseSizeVector( width, height, length ); if ( !readXMLNode< std::string >( hRoot, "mesh", this, &OpenGate::MeshEntity::setMesh, false ) ){ @@ -182,17 +178,6 @@ } } -void MeshEntity::setBaseSize( float length, float width, float height ){ - baseSize_[ 0 ] = length; - baseSize_[ 1 ] = width; - baseSize_[ 2 ] = height; -} - - /*! If size is a scalar value, the length of the entity. */ -void MeshEntity::setBaseSize( float size ){ baseSize_[ 2 ] = size; } - -Ogre::Vector3 MeshEntity::baseSize( ) const { return baseSize_; } - std::string MeshEntity::createMeshName( const std::string & meshName ){ return strReplaceBlankWithUnderscore( strCopyToLowerCase( meshName ) ); } Modified: trunk/src/Entity.h =================================================================== --- trunk/src/Entity.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Entity.h 2009-01-19 23:13:32 UTC (rev 950) @@ -78,16 +78,15 @@ virtual void readPropertiesFromXML( TiXmlHandle & hRoot ); - inline std::string factionName( ) const { return factionName_; } + inline void setName( const std::string & name ) { name_ = name; } + inline const std::string & name( ) const { return name_; } void setFactionID( int id ); inline int factionID( ) const { return factionID_; } + inline const std::string & factionName( ) const { return factionName_; } - inline void setName( const std::string & name ) { name_ = name; } - inline std::string name( ) const { return name_; } - inline void setCategoryName( const std::string & category ) { category_ = category; } - inline std::string categoryName( ) const { return category_; } + inline const std::string & categoryName( ) const { return category_; } inline void setID( int id ){ id_ = id; } inline int id( ) const { return id_; } @@ -102,10 +101,10 @@ inline int size( ) const { return size_; } inline void setDescription( const std::string & description ){ description_ = description; } - inline std::string description( ) const { return description_; } + inline const std::string & description( ) const { return description_; } inline void setImageName( const std::string & imageFileName ) { imageFileName_ = imageFileName; } - inline std::string imageName() const { return imageFileName_; } + inline const std::string & imageName() const { return imageFileName_; } inline std::string ceguiImageName() { if ( !imageInitialised_ ) loadImages_(); return ceguiImageName_; } inline std::string ceguiSmallImageName() { if ( !imageInitialised_ ) loadImages_(); return ceguiSmallImageName_; } @@ -114,11 +113,11 @@ inline void addProductionCenter( const std::string & productionCenter ) { productionCenters_.insert( productionCenter ); } - inline std::set < std::string > productionCenters( ) const { return productionCenters_; } + inline const std::set < std::string > & productionCenters( ) const { return productionCenters_; } inline void setRequieredComponents( const std::set < Entity * > & requieredComponents ) { requieredComponents_ = requieredComponents; } - inline std::set < Entity * > requieredComponents( ) const { return requieredComponents_; } + inline const std::set < Entity * > & requieredComponents( ) const { return requieredComponents_; } protected: inline void setFactionName_( const std::string & name ) { factionName_ = name; } @@ -168,11 +167,12 @@ void readPropertiesFromXML( TiXmlHandle & hRoot ); /*! Base sizes are necessary for resizing the ogremesh */ - void setBaseSize( float length, float width, float height ); - + inline void setBaseSizeVector( float length, float width, float height ){ + baseSize_[ 0 ] = length; baseSize_[ 1 ] = width; baseSize_[ 2 ] = height; } + /*! If size is a scalar value, the length of the entity.*/ - void setBaseSize( float size ); - Ogre::Vector3 baseSize( ) const; + inline void setBaseSize( float size ){ baseSize_[ 2 ] = size; } + inline const Ogre::Vector3 & baseSize( ) const { return baseSize_; } /*! Base sizes are necessary for resizing the ogremesh */ inline void setBaseYaw( Ogre::Real baseYaw ){ baseYaw_ = baseYaw; } @@ -187,7 +187,7 @@ inline Ogre::Real baseRoll( ) const { return baseRoll_; } void setMesh( const std::string & meshName ); - std::string meshName( ) const { return meshName_; } + inline const std::string & meshName( ) const { return meshName_; } virtual std::string createMeshName( const std::string & meshName ); Ogre::MeshPtr & meshPtr( ){ return pMesh_; } Modified: trunk/src/Hud.cpp =================================================================== --- trunk/src/Hud.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Hud.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -289,14 +289,15 @@ // armorProgressLeftImg_->setYPosition( CEGUI::UDim( 0.5, -armorProgressHeight_/2.0 ) ); // armorProgressRightImg_->setYPosition( CEGUI::UDim( 0.5, -armorProgressHeight_/2.0 ) ); // -// if ( avatar_->breakPressed() ){ -// velocityText_->setProperty( "TextColours", "ffff0000" ); -// } else if (avatar_->afterburnerPressed()){ -// velocityText_->setProperty( "TextColours", "ff00ff00" ); -// } else { -// velocityText_->setProperty( "TextColours", "ffffffff" ); -// } - velocityText_->setText( "V" + Ogre::StringConverter::toString( round( (Ogre::Real)avatar_->speed(), 2 ), 4 ) ); + if ( avatar_->brakePressed() ){ + velocityText_->setProperty( "TextColours", "ffff0000" ); + } else if (avatar_->afterburnerPressed()){ + velocityText_->setProperty( "TextColours", "ff00ff00" ); + } else { + velocityText_->setProperty( "TextColours", "ffffffff" ); + } + velocityText_->setText( "V" + Ogre::StringConverter::toString( round( (Ogre::Real)avatar_->speed(), 2 ), 4 ) ); + // shieldText_->setText( "S" + Ogre::StringConverter::toString( avatar_->shieldRate() * 100.0f, 4 ) ); // armorText_->setText( "A" + Ogre::StringConverter::toString( avatar_->armorRate() * 100.0f, 4 ) ); Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Makefile.am 2009-01-19 23:13:32 UTC (rev 950) @@ -82,12 +82,16 @@ SectorAvatarObject.cpp \ SectorBaseObject.h \ SectorBaseObject.cpp \ + SectorBeaconObject.h \ + SectorBeaconObject.cpp \ SectorCollisionObject.h \ SectorCollisionObject.cpp \ SectorMeshObject.h \ SectorMeshObject.cpp \ SectorMovableObject.h \ SectorMovableObject.cpp \ + SectorStationObject.h \ + SectorStationObject.cpp \ SectorVesselObject.h \ SectorVesselObject.cpp \ SectorObject.h \ Modified: trunk/src/OpcodeWrapper.cpp =================================================================== --- trunk/src/OpcodeWrapper.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/OpcodeWrapper.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -60,8 +60,7 @@ collisionManager_->addCollType( "Station", "Bullet", OgreOpcode::COLLTYPE_EXACT ); collisionManager_->addCollType( "DockPad", "SectorObject", OgreOpcode::COLLTYPE_EXACT ); - // collisionManager_->addCollType( "SectorObject", "SectorObject", OgreOpcode::COLLTYPE_CONTACT ); - // collisionManager_->addCollType( "SectorObject", "SectorObject", OgreOpcode::COLLTYPE_QUICK ); + //** possible contact types OgreOpcode::COLLTYPE_CONTACT || OgreOpcode::COLLTYPE_QUICK collideInSectorContext_ = collisionManager_->getDefaultContext(); } else { @@ -70,7 +69,6 @@ } void OpcodeCollisionDetection::free( ){ - if ( collisionManager_ ) delete collisionManager_; collisionManager_ = NULL; } @@ -81,22 +79,22 @@ OgreOpcode::CollisionReporter report( collideInSectorContext_->getCollisionReport() ); - int nCollids = report.getNumCollisions(); + uint nCollids = report.getNumCollisions(); if ( nCollids > 0 ){ // std::cout << "OpcodeCollisionDetection::update() " << nCollids << std::endl; OgreOpcode::CollisionPair **collisionReport; report.getAllCollisions( collisionReport ); - for ( int i = 0; i < nCollids; i ++ ){ - OgreOpcode::CollisionObject* col1 = collisionReport[ i ]->this_object; - OgreOpcode::CollisionObject* col2 = collisionReport[ i ]->other_object; + for ( uint i = 0; i < nCollids; i ++ ){ + OgreOpcode::CollisionObject * col1 = collisionReport[ i ]->this_object; + OgreOpcode::CollisionObject * col2 = collisionReport[ i ]->other_object; // std::cout << i << ": "<< col1->getName() << "<->" << col2->getName() << std::endl; - static_cast< BaseObject * >( col1->getClientData() )->collide( static_cast< BaseObject * >( + static_cast< SectorCollisionObject * >( col1->getClientData() )->collide( static_cast< SectorCollisionObject * >( col2->getClientData() ) ); - static_cast< BaseObject * >( col2->getClientData() )->collide( static_cast< BaseObject * >( + static_cast< SectorCollisionObject * >( col2->getClientData() )->collide( static_cast< SectorCollisionObject * >( col1->getClientData() ) ); } } // if ncols @@ -105,9 +103,9 @@ return true; } -void OpcodeCollisionDetection::createObject( SectorCollisionObject * obj ){ +void OpcodeCollisionDetection::create( SectorCollisionObject * obj ){ if ( obj && active_ ){ - OgreOpcode::CollisionObject * collObj = obj->pCollisionObject(); + OgreOpcode::CollisionObject * collObj = obj->collisionObject(); if ( !collObj ){ OgreOpcode::EntityCollisionShape * collShape = collisionManager_->createEntityCollisionShape( obj->name() + "/CollShape" ); @@ -129,33 +127,14 @@ } } -void OpcodeCollisionDetection::createObject( BaseObject * obj ){ - +void OpcodeCollisionDetection::destroy( SectorCollisionObject * obj ){ if ( obj && active_ ){ - OgreOpcode::CollisionObject * collObj = obj->collisionObject(); - - if ( !collObj ){ - - OgreOpcode::EntityCollisionShape * collShape = collisionManager_->createEntityCollisionShape( obj->name() + "/CollShape" ); - if ( obj->entity() ){ - collShape->load( obj->entity() ); - } else { - std::cout << "OpcodeCollisionDetection::createObject( BaseObject * obj ), no entity defined for obj: " << obj->name(); - } - - collObj = collideInSectorContext_->createObject( obj->name() + "/CollObj" ); - collObj->setCollClass( collisionManager_->queryCollClass( obj->collisionClass() ) ); - collObj->setShape( collShape ); - - collObj->setClientData( obj ); - collideInSectorContext_->addObject( collObj ); - - obj->setCollisionObject( collObj ); - } + destroy( obj->collisionObject() ); + obj->setCollisionObject( NULL ); } } -void OpcodeCollisionDetection::destroyObject( OgreOpcode::CollisionObject * obj ){ +void OpcodeCollisionDetection::destroy( OgreOpcode::CollisionObject * obj ){ if ( obj && active_ ){ OgreOpcode::ICollisionShape * shape = obj->getShape(); collideInSectorContext_->destroyObject( obj ); @@ -164,26 +143,6 @@ } } -void OpcodeCollisionDetection::destroyObject( BaseObject * obj ){ - - if ( obj && active_ ){ - destroyObject( obj->collisionObject() ); - obj->setCollisionObject( NULL ); - } -} - -void OpcodeCollisionDetection::detach( BaseObject * obj ){ - if ( obj && active_ ){ - destroyObject( obj ); - } -} - -void OpcodeCollisionDetection::attach( BaseObject * obj ){ - if ( obj && active_ ){ - createObject( obj ); - } -} - bool OpcodeCollisionDetection::checkCollideRay( SectorCollisionObject * obj, const Ogre::Ray & ray, double rayLength ){ if ( active_ ){ if ( !obj->destroyRequest() ){ @@ -222,6 +181,59 @@ return false; } + + + + + + + +void OpcodeCollisionDetection::createObject( BaseObject * obj ){ + + if ( obj && active_ ){ + OgreOpcode::CollisionObject * collObj = obj->collisionObject(); + + if ( !collObj ){ + + OgreOpcode::EntityCollisionShape * collShape = collisionManager_->createEntityCollisionShape( obj->name() + "/CollShape" ); + if ( obj->entity() ){ + collShape->load( obj->entity() ); + } else { + std::cout << "OpcodeCollisionDetection::createObject( BaseObject * obj ), no entity defined for obj: " << obj->name(); + } + + collObj = collideInSectorContext_->createObject( obj->name() + "/CollObj" ); + collObj->setCollClass( collisionManager_->queryCollClass( obj->collisionClass() ) ); + collObj->setShape( collShape ); + + collObj->setClientData( obj ); + collideInSectorContext_->addObject( collObj ); + + obj->setCollisionObject( collObj ); + } + } +} + +void OpcodeCollisionDetection::destroyObject( BaseObject * obj ){ + + if ( obj && active_ ){ + destroy( obj->collisionObject() ); + obj->setCollisionObject( NULL ); + } +} + +void OpcodeCollisionDetection::detach( BaseObject * obj ){ + if ( obj && active_ ){ + destroyObject( obj ); + } +} + +void OpcodeCollisionDetection::attach( BaseObject * obj ){ + if ( obj && active_ ){ + createObject( obj ); + } +} + bool OpcodeCollisionDetection::checkCollideRay( BaseObject * obj, const Ogre::Ray & ray, double rayLength){ if ( active_ ){ if ( !obj->isSetDestroyRequest() ){ Modified: trunk/src/OpcodeWrapper.h =================================================================== --- trunk/src/OpcodeWrapper.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/OpcodeWrapper.h 2009-01-19 23:13:32 UTC (rev 950) @@ -29,23 +29,33 @@ public: OpcodeCollisionDetection( ResourceManager * resources = NULL ); - ~OpcodeCollisionDetection(); + ~OpcodeCollisionDetection(); - void init( Ogre::SceneManager * sceneMgr ); + /*! Initialize resources for OpcodeCollisionDetection. opposite to free.*/ + void init( Ogre::SceneManager * sceneMgr ); - void free(); + /*! Free resources for OpcodeCollisionDetection. opposite to init.*/ + void free(); - bool update( Ogre::Real elapsedTime ); + /*! Update loop, check for collisions */ + bool update( Ogre::Real elapsedTime ); + + /*! Utility method to check if there is a collision of the object with a given ray */ + bool checkCollideRay( SectorCollisionObject * obj, const Ogre::Ray & ray, double rayLength ); - /*! Deregister and destroy CollisionObject */ - void destroyObject( OgreOpcode::CollisionObject * obj ); - /*! Create and register SectorCollisionObject */ - void createObject( SectorCollisionObject * obj ); - - /*! Check if there is a collision of the object with a given ray */ - bool checkCollideRay( SectorCollisionObject * obj, const Ogre::Ray & ray, double rayLength ); + void create( SectorCollisionObject * obj ); + /*! Create and register SectorCollisionObject */ + void destroy( SectorCollisionObject * obj ); + + /*! Deregister and destroy CollisionObject */ + void destroy( OgreOpcode::CollisionObject * obj ); + + /*! Write some debug infos about all collision objects to stdout*/ + void info( ); + + /*! DEPRECATED */ void createObject( BaseObject * obj ); @@ -61,14 +71,10 @@ /*! DEPRECATED */ bool checkCollideRay( BaseObject * obj, const Ogre::Ray & ray, double rayLength ); - /*! Write some debug infos about all collision objects to stdout*/ - void info( ); - protected: - OgreOpcode::CollisionContext * collideInSectorContext_; - OgreOpcode::CollisionManager * collisionManager_; - bool active_; - + OgreOpcode::CollisionContext * collideInSectorContext_; + OgreOpcode::CollisionManager * collisionManager_; + bool active_; }; Modified: trunk/src/Opengate.h =================================================================== --- trunk/src/Opengate.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Opengate.h 2009-01-19 23:13:32 UTC (rev 950) @@ -35,12 +35,14 @@ namespace OpenGate{ -#define SECTORBASEOBJECT_RTTI 1 -#define SECTORCOLLISIONOBJECT_RTTI 3 -#define SECTORMESHOBJECT_RTTI 4 -#define SECTORMOVABLEOBJECT_RTTI 5 -#define SECTORVESSELOBJECT_RTTI 6 -#define SECTORAVATAROBJECT_RTTI 7 +#define SECTOR_AVATAR_OBJECT_RTTI 1 +#define SECTOR_BASE_OBJECT_RTTI 2 +#define SECTOR_BEACON_OBJECT_RTTI 3 +#define SECTOR_COLLISION_OBJECT_RTTI 4 +#define SECTOR_MESH_OBJECT_RTTI 5 +#define SECTOR_MOVABLE_OBJECT_RTTI 6 +#define SECTOR_STATION_OBJECT_RTTI 7 +#define SECTOR_VESSEL_OBJECT_RTTI 8 #define SECTOROBJECTENVIRONMENT_RTTI 1000010 #define PROJECTILE_RTTI 100001 @@ -74,9 +76,11 @@ class Sector; class SectorAvatarObject; class SectorBaseObject; +class SectorBeaconObject; class SectorCollisionObject; class SectorMeshObject; class SectorMovableObject; +class SectorStationObject; class SectorVesselObject; class SectorObject; Modified: trunk/src/Sector.cpp =================================================================== --- trunk/src/Sector.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Sector.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -25,12 +25,15 @@ #include "commonWithOgre.h" #include "Avatar.h" +#include "EntityManager.h" #include "LogManager.h" #include "OpcodeWrapper.h" #include "ResourceManager.h" #include "SectorAvatarObject.h" +#include "SectorBeaconObject.h" #include "SectorCollisionObject.h" #include "SectorMeshObject.h" +#include "SectorStationObject.h" #include <OgreEntity.h> @@ -99,21 +102,23 @@ pElem = hRoot.ChildElement( "station", 0 ).Element(); if ( pElem ){ -// std::string name; readXMLAttribute < std::string >( pElem, "name", name ); -// Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); -// Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); -// SectorObject *obj = createStation( name, pos ); -// if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + std::string name; readXMLAttribute < std::string >( pElem, "name", name ); + Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); + Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); + SectorMeshObject *obj = createStation( name ); + if ( pos != Ogre::Vector3::ZERO ) obj->mainNode()->setPosition( pos ); + if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); } pElem = hRoot.ChildElement( "beacon", 0 ).Element(); if ( pElem ){ - Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); - Ogre::Vector3 dir( readXMLVec3Element( pElem, "direction" ) ); - Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); -// SectorObject * obj = createBeacon( pos ); -// obj->mainNode()->setDirection( dir ); -// if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); + Ogre::Vector3 dir( readXMLVec3Element( pElem, "direction" ) ); + Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); + SectorMeshObject * obj = createBeacon( ); + if ( pos != Ogre::Vector3::ZERO ) obj->mainNode()->setPosition( pos ); + if ( dir != Ogre::Vector3::ZERO ) obj->mainNode()->setDirection( dir ); + if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); } for ( pElem = hRoot.FirstChild( "sectorobject" ).Element(); pElem != 0; pElem = pElem->NextSiblingElement("sectorobject") ) { @@ -127,9 +132,9 @@ if ( pElemChild ){ std::string mesh; readXMLAttribute < std::string >( pElemChild, "meshFile", mesh ); SectorMeshObject * obj = createMeshObject( name, mesh ); - if ( pos != Ogre::Vector3::ZERO ) obj->mainNode()->setPosition( pos ); - // if ( scale != Ogre::Vector3::ZERO ) obj->scale( scale ); - if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + if ( pos != Ogre::Vector3::ZERO ) obj->mainNode()->setPosition( pos ); + if ( scale != Ogre::Vector3::ZERO ) obj->scaleNode()->scale( scale ); + if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); int nSubEnt = 0; readXMLAttribute < int >( pElemChild, "numSubEntities", nSubEnt ); for ( int i = 0; i < nSubEnt; i ++ ){ @@ -156,6 +161,24 @@ return obj; } +SectorMeshObject * Sector::createBeacon( ){ + SectorMeshObject * obj = new SectorBeaconObject( this->name() + "/Beacon", this ); + sectorObjects_.insert( obj ); + return obj; +} + +SectorMeshObject * Sector::createStation( const Ogre::String & stationName ){ + Station * station = ResourceManager::getSingleton().entityManager->station( stationName ); + SectorMeshObject * obj = NULL; + + if ( station ){ + obj = new SectorStationObject( station, this ); + sectorObjects_.insert( obj ); + sectorStations_.insert( dynamic_cast< SectorStationObject * >( obj ) ); + } + return obj; +} + void Sector::createAvatarObject( Avatar & avatar ){ log_->info( std::string( "Sector::createAvatarObject: " ) + avatar.name() ); avatar_ = new SectorAvatarObject( avatar.name(), this, avatar.vessel() ); Modified: trunk/src/Sector.h =================================================================== --- trunk/src/Sector.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/Sector.h 2009-01-19 23:13:32 UTC (rev 950) @@ -62,6 +62,12 @@ /*! Create a mesh within the sector, without any specialization */ SectorMeshObject * createMeshObject( const std::string & name, const std::string & meshname ); + /*! Create a beacon within the sector */ + SectorMeshObject * createBeacon( ); + + /*! Create a station within the sector */ + SectorMeshObject * createStation( const Ogre::String & stationName ); + /*! Return handle to the avatarObject */ inline SectorAvatarObject * avatarObject() { return avatar_; } @@ -81,6 +87,9 @@ /*! Hold all stuff that makes the sector looking nice */ //std::set< SectorEnvironmentObject * > sectorEnvironment_; + /*! Hold all stuff that makes the sector looking nice */ + std::set< SectorStationObject * > sectorStations_; + std::map< std::string, std::deque< SectorCollisionObject * > > objectHeap_; }; @@ -215,7 +224,7 @@ std::map< long, SectorObjectMovable * > movableObjects_; std::map< long, SectorObjectMissile * > localAiObjects_; - + float avatarDeathSequenceTime_; bool radar_ ; Modified: trunk/src/SectorAvatarObject.cpp =================================================================== --- trunk/src/SectorAvatarObject.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorAvatarObject.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -47,8 +47,7 @@ } void SectorAvatarObject::collide( SectorCollisionObject * object ){ - std::cout << "SectorAvatarObject: " << this->name() << " collide with " - << object->rtti() << " " << object->name() << std::endl; + SectorMovableObject::collide( object ); } bool SectorAvatarObject::update( Ogre::Real elapsedTime ){ Modified: trunk/src/SectorAvatarObject.h =================================================================== --- trunk/src/SectorAvatarObject.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorAvatarObject.h 2009-01-19 23:13:32 UTC (rev 950) @@ -36,7 +36,7 @@ virtual ~SectorAvatarObject( ); /*! Abstract method for runtime identification */ - virtual int rtti( ) const { return SECTORAVATAROBJECT_RTTI; } + virtual int rtti( ) const { return SECTOR_AVATAR_OBJECT_RTTI; } virtual bool update( Ogre::Real elapsedTime ); Added: trunk/src/SectorBeaconObject.cpp =================================================================== --- trunk/src/SectorBeaconObject.cpp (rev 0) +++ trunk/src/SectorBeaconObject.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -0,0 +1,72 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "SectorBeaconObject.h" + +#include "LogManager.h" +#include "ResourceManager.h" +#include "Sector.h" + +#include <OgreEntity.h> +#include <OgreSceneManager.h> +#include <OgreSceneNode.h> +#include <OgreSubEntity.h> + +namespace OpenGate{ + +SectorBeaconObject::SectorBeaconObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode ) + : SectorMeshObject( name, sector, parentNode ) { + this->setMesh( "beacon.mesh" ); + + entityScaleNode_->scale( 20.0, 20.0, 20.0 ); + + for ( uint i = 0; i < entity()->getNumSubEntities(); i ++ ){ + std::cout << entity()->getSubEntity( i )->getMaterialName() << " Techniques: " + << entity()->getSubEntity( i )->getMaterial()->getNumTechniques() << " used: " + << entity()->getSubEntity( i )->getTechnique()->getName() << std::endl; + + if ( entity()->getSubEntity( i )->getMaterialName() == "beacon/bg" ){ + entity()->getSubEntity( i )->setMaterialName( "Sta/TS/Background" ); + } + + if ( entity()->getSubEntity( i )->getMaterialName() == "beacon/pad_mount_0" ){ + entity()->getSubEntity( i )->setMaterialName( "singleColor" ); + entity()->getSubEntity( i )->setCustomParameter( 0, Ogre::Vector4( 0.5, 0.5, 0.5, 1.0 ) ); +// entryPad_ = new BeaconPad( "EntryPad", this, entity()->getSubEntity( i ) ); +// entryPad_->changeEntity( "beacon_pad.mesh" ); +// entryPad_->entity()->setMaterialName( "singleColor" ); +// entryPad_->entity()->getSubEntity( 0 )->setCustomParameter( 0, Ogre::Vector4( 0.8, 0.0, 0.0, 0.2 ) ); + } + if ( entity()->getSubEntity( i )->getMaterialName() == "beacon/pad_mount_1" ){ + entity()->getSubEntity( i )->setMaterialName( "singleColor" ); + entity()->getSubEntity( i )->setCustomParameter( 0, Ogre::Vector4( 0.5, 0.5, 0.5, 1.0 ) ); +// exitPad_ = new BeaconPad( "ExitPad", this, entity()->getSubEntity( i ) ); +// exitPad_->changeEntity( "beacon_pad.mesh" ); +// exitPad_->entity()->setMaterialName( "singleColor" ); +// exitPad_->entity()->getSubEntity( 0 )->setCustomParameter( 0, Ogre::Vector4( 0.8, 0.0, 0.0, 0.2 ) ); + } + } +} + +SectorBeaconObject::~SectorBeaconObject( ){ + +} + +} Added: trunk/src/SectorBeaconObject.h =================================================================== --- trunk/src/SectorBeaconObject.h (rev 0) +++ trunk/src/SectorBeaconObject.h 2009-01-19 23:13:32 UTC (rev 950) @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORBEACONOBJECT__H +#define _OPENGATE_SECTORBEACONOBJECT__H + +#include "Opengate.h" + +#include "SectorMeshObject.h" + +namespace OpenGate{ + +/*! A Beacon object */ +class SectorBeaconObject : public SectorMeshObject { +public: + /*! Construct the Beacon */ + SectorBeaconObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode = NULL ); + + /*! Default destructor */ + virtual ~SectorBeaconObject( ); + + /*! Abstract method for runtime identification */ + virtual int rtti( ) const { return SECTOR_BEACON_OBJECT_RTTI; } + + /*! Update function */ + virtual bool update( Ogre::Real elapsedTime ) { return true; } + +protected: + +}; + +} //namespace OpenGate + +#endif //_OPENGATE_SECTORBEACONOBJECT__H Modified: trunk/src/SectorCollisionObject.h =================================================================== --- trunk/src/SectorCollisionObject.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorCollisionObject.h 2009-01-19 23:13:32 UTC (rev 950) @@ -36,7 +36,7 @@ virtual ~SectorCollisionObject( ); /*! Abstract method for runtime identification */ - virtual int rtti( ) const { return SECTORCOLLISIONOBJECT_RTTI; } + virtual int rtti( ) const { return SECTOR_COLLISION_OBJECT_RTTI; } /*! Abstract update function */ virtual bool update( Ogre::Real elapsedTime ) = 0; @@ -49,7 +49,7 @@ inline void setCollisionObject( OgreOpcode::CollisionObject * obj ){ collObj_ = obj; } /*! Return a ptr to the collisionObject.*/ - inline OgreOpcode::CollisionObject * pCollisionObject( ){ return collObj_; } + inline OgreOpcode::CollisionObject * collisionObject( ){ return collObj_; } /*! Return the type of the collisionObject, That determines the kind of collision detection.*/ inline virtual std::string collisionClass() const { return "SectorObject"; } Modified: trunk/src/SectorMeshObject.cpp =================================================================== --- trunk/src/SectorMeshObject.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorMeshObject.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -41,7 +41,7 @@ SectorMeshObject::~SectorMeshObject( ){ if ( ResourceManager::getSingleton().collisionManager ){ - ResourceManager::getSingleton().collisionManager->destroyObject( collObj_ ); + ResourceManager::getSingleton().collisionManager->destroy( collObj_ ); } if ( entity_ ) sector_->sceneManager()->destroyEntity( entity_ ); entityRotNode_->detachAllObjects(); @@ -70,7 +70,7 @@ entityRotNode_->attachObject( entity_ ); if ( ResourceManager::getSingleton().collisionManager ){ - ResourceManager::getSingleton().collisionManager->createObject( this ); + ResourceManager::getSingleton().collisionManager->create( this ); } } Modified: trunk/src/SectorMeshObject.h =================================================================== --- trunk/src/SectorMeshObject.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorMeshObject.h 2009-01-19 23:13:32 UTC (rev 950) @@ -36,7 +36,7 @@ virtual ~SectorMeshObject( ); /*! Abstract method for runtime identification */ - virtual int rtti( ) const { return SECTORMESHOBJECT_RTTI; } + virtual int rtti( ) const { return SECTOR_MESH_OBJECT_RTTI; } /*! Update function */ virtual bool update( Ogre::Real elapsedTime ) { return true; } @@ -64,10 +64,6 @@ Ogre::SceneNode * entityRotNode_; // Main character node for base rotation }; - class SectorStationObject : public SectorMeshObject{ - }; - class SectorBeaconObject : public SectorMeshObject{ - }; class SectorAsteroidObject : public SectorMeshObject{ }; class SectorAnomalieObject : public SectorMeshObject{ Modified: trunk/src/SectorMovableObject.cpp =================================================================== --- trunk/src/SectorMovableObject.cpp 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorMovableObject.cpp 2009-01-19 23:13:32 UTC (rev 950) @@ -55,22 +55,40 @@ interpolateRot_ = Ogre::Quaternion::ZERO; interpolateVel_ = Ogre::Vector3::ZERO; - brakePressed_ = false;; + brakePressed_ = false; + afterburnerPressed_ = false; + lifeTime_ = 0.0; + speed_ = 0.0; + maxSpeed_ = movable_->maxSpeed(); + thrustRate_ = 0.0; - lifeTime_ = 0.0; - speed_ = 0.0; - maxSpeed_ = movable_->maxSpeed(); - thrustRate_ = 0.0; - - thrust_ = 0; - mass_ = movable_->mass(); - armor_ = movable_->armor(); - shield_ = 0; + thrust_ = 0; + mass_ = movable_->mass(); + armor_ = movable_->armor(); + shield_ = 0; } -void SectorMovableObject::collide( SectorCollisionObject * object ){ +void SectorMovableObject::collide( SectorCollisionObject * obj ){ std::cout << "SectorMovableObject: " << this->name() << " collide with " - << object->rtti() << " " << object->name() << std::endl; + << obj->rtti() << " " << obj->name() << std::endl; + + if ( this != obj ){ + switch( obj->rtti( ) ){ + case SECTOR_AVATAR_OBJECT_RTTI: + case SECTOR_BEACON_OBJECT_RTTI: + case SECTOR_MESH_OBJECT_RTTI: + case SECTOR_MOVABLE_OBJECT_RTTI: + case SECTOR_STATION_OBJECT_RTTI: + case SECTOR_VESSEL_OBJECT_RTTI: + vel_ *= -1.0; + mainNode_->translate( ( mainNode_->getPosition() - + obj->mainNode()->getPosition() ).normalisedCopy() * 3.0 ); + break; +// case SECTOROBJECTMISSILE_RTTI: +// hitByAmmo( dynamic_cast < SectorObjectMissile *>( obj )->missile()->damage() ); +// break; + } + } } bool SectorMovableObject::update( Ogre::Real elapsedTime ){ @@ -116,9 +134,10 @@ vel_ += acc_ * elapsedTime; speed_ = vel_.length(); - if ( speed_ > movable_->maxSpeed() ){ - vel_ *= movable_->maxSpeed() / speed_; - } else if ( speed_ < 0.01 ){ +// if ( speed_ > movable_->maxSpeed() && !afterburnerPressed_ ){ +// vel_ *= movable_->maxSpeed() / speed_; +// } else + if ( speed_ < 0.01 ){ vel_ *= 0.0; } Modified: trunk/src/SectorMovableObject.h =================================================================== --- trunk/src/SectorMovableObject.h 2009-01-19 21:37:39 UTC (rev 949) +++ trunk/src/SectorMovableObject.h 2009-01-19 23:13:32 UTC (rev 950) @@ -38,7 +38,7 @@ virtual ~SectorMovableObject( ); /*! Abstract method for runtime identification */ - virtual int rtti( ) const { return SECTORMOVABLEOBJECT_RTTI; } + virtual int rtti( ) const { return SECTOR_MOVABLE_OBJECT_RTTI; } virtual bool update( Ogre::Real elapsedTime ); @@ -94,11 +94,17 @@ inline Ogre::Real brakingAcc(){ return 5.0; } /*! Set the brake key top be pressed or released */ - void setBrakePressed( bool pressed ) { brakePressed_ = pressed; } + inline void setBrakePressed( bool pressed ) { if ( pressed ) thrustRate_ = 0.0; brakePressed_ = pressed; } /*! Return if brake key pressed */ - bool brakePressed( ) const { return brakePressed_; } - + inline bool brakePressed( ) const { return brakePressed_; } + + /*! Afterburner pressed */ + inline void setAfterburnerPressed( bool pressed ){ if ( pressed ) thrustRate_ = 1.0; afterburnerPressed_ = pressed; } + + /*! Return the afterburner key status */ + inline bool afterburnerPressed( ) const { return afterburnerPressed_; } + /*! Reset all values for this object. */ virtual void reset( ); @@ -122,6 +128,7 @@ Ogre::Vector3 interpolateVel_; bool brakePressed_; + bool ... [truncated message content] |
From: <spo...@us...> - 2009-01-19 22:55:23
|
Revision: 949 http://opengate.svn.sourceforge.net/opengate/?rev=949&view=rev Author: spom_spom Date: 2009-01-19 21:37:39 +0000 (Mon, 19 Jan 2009) Log Message: ----------- we need a base size for each mesh related thing (for initial scaling) Modified Paths: -------------- trunk/data/stations/tauseti_wake.xml Modified: trunk/data/stations/tauseti_wake.xml =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-18 18:40:12
|
Revision: 948 http://opengate.svn.sourceforge.net/opengate/?rev=948&view=rev Author: Ultrasick Date: 2009-01-18 18:40:01 +0000 (Sun, 18 Jan 2009) Log Message: ----------- adding some info about how the economy could work. Depending on supply, demand, mining and production. It's just a very basic idea and doesn't inclued everything like occuring resources by creating a new account or deleting one. Added Paths: ----------- doc/how_the_economy_works.odt doc/how_the_economy_works.pdf Added: doc/how_the_economy_works.odt =================================================================== (Binary files differ) Property changes on: doc/how_the_economy_works.odt ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: doc/how_the_economy_works.pdf =================================================================== (Binary files differ) Property changes on: doc/how_the_economy_works.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-18 18:36:40
|
Revision: 947 http://opengate.svn.sourceforge.net/opengate/?rev=947&view=rev Author: Ultrasick Date: 2009-01-18 18:36:26 +0000 (Sun, 18 Jan 2009) Log Message: ----------- removing incomplete files (the info in the xml was also partly wrong) because it causes trouble for my script Removed Paths: ------------- templates/ecms/ghost.wings trunk/data/ecms/ghost.xml Deleted: templates/ecms/ghost.wings =================================================================== (Binary files differ) Deleted: trunk/data/ecms/ghost.xml =================================================================== --- trunk/data/ecms/ghost.xml 2009-01-18 13:40:01 UTC (rev 946) +++ trunk/data/ecms/ghost.xml 2009-01-18 18:36:26 UTC (rev 947) @@ -1,35 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE equipment SYSTEM "http://opengate.sourceforge.net/opengate.dtd"> - -<equipment type="ECM"> - <!-- Naming --> - <faction>Tauseti</faction> - <name>Ghost</name> - - <!-- Generic Data --> - <class>Radar Jammer</class> - <techlevel>8</techlevel> - <size>1</size> - <mass>30</mass> - - <!-- Additional Data --> - <description>TODO</description> - <image>ghost.png</image> - <model>ghost.blend</model> - <mesh>ghost.mesh</mesh> - - <!-- Specific data --> - <sensorlevel>3</sensorlevel> - <power_input>970000</power_input> - - <!-- Production Data --> - <manufacturer>Amananth</manufacturer> - <production-center>Amananth</production-center> - - <!-- Building Data --> - <required-component>Antimony</required-component> - <required-component>RAM</required-component> - <required-component>CPU</required-component> - <required-component>Magnetics</required-component> - -</equipment> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-18 13:40:03
|
Revision: 946 http://opengate.svn.sourceforge.net/opengate/?rev=946&view=rev Author: Ultrasick Date: 2009-01-18 13:40:01 +0000 (Sun, 18 Jan 2009) Log Message: ----------- new firefly model (based a little on the purgatory) + corrected xml data (based on the purgatory) the .mesh file is still the old Modified Paths: -------------- templates/missiles/firefly.blend trunk/data/missiles/firefly.xml trunk/data/missiles/firefly_big.png trunk/data/missiles/firefly_small.png Modified: templates/missiles/firefly.blend =================================================================== (Binary files differ) Modified: trunk/data/missiles/firefly.xml =================================================================== --- trunk/data/missiles/firefly.xml 2009-01-18 11:17:14 UTC (rev 945) +++ trunk/data/missiles/firefly.xml 2009-01-18 13:40:01 UTC (rev 946) @@ -1,31 +1,28 @@ <?xml version="1.0"?> <container> - <object_id>10001</object_id> - <name_de>firefly</name_de> - <name_en>firefly</name_en> - <mesh>firefly</mesh> - <category_id>11</category_id> - <faction_id>3</faction_id> - <description_en>Defense anti missile missile</description_en> -<!-- <production_center>Octavius Great Pillars</production_center> - <production_center>Octavius Outpost</production_center> - <manufacturer>Octave Propulsion Laboratories</manufacturer>--> - <required_rank>2</required_rank> - <size>1</size> - <mass>10</mass> - <thrust>350000</thrust> - <damage>1000</damage> - <yaw>150</yaw> - <pitch>150</pitch> - <roll>150</roll> - <armor>10</armor> - <lifetime>20</lifetime> - <drag>1</drag> - <basesize>1</basesize> - <required_component>aluminium</required_component> - <required_component>magnesium</required_component> - <required_component>laser components</required_component> - <required_component>magnetic components</required_component> - <required_political_status>0</required_political_status> -</container> + <object_id>874</object_id> + <name_de>Firefly</name_de> + <name_en>Firefly</name_en> + <category_id>13</category_id> + <faction_id>2</faction_id> + <production_center>Quantar Core</production_center> + <production_center>Quantar TriPoint</production_center> + <production_center>Quantar Corridor</production_center> + <manufacturer>Cromforge Enterprises</manufacturer> + <required_rank>12</required_rank> + <size>2</size> + <mass>205</mass> + <maximum_thrust>82000</maximum_thrust> + <maximum_pitch>87</maximum_pitch> + <maximum_yaw>87</maximum_yaw> + <drag_factor>0.21</drag_factor> + <damage>4250</damage> + <life_time>20</life_time> + <required_component>iron</required_component> + <required_component>CPUs</required_component> + <required_component>fuel cells</required_component> + <required_component>explosives</required_component> + <required_component>carbon</required_component> + <required_political_status>28</required_political_status> +</container> \ No newline at end of file Modified: trunk/data/missiles/firefly_big.png =================================================================== (Binary files differ) Modified: trunk/data/missiles/firefly_small.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-18 11:17:23
|
Revision: 945 http://opengate.svn.sourceforge.net/opengate/?rev=945&view=rev Author: Ultrasick Date: 2009-01-18 11:17:14 +0000 (Sun, 18 Jan 2009) Log Message: ----------- renameing templates + adding missing templates Added Paths: ----------- templates/gui/docked/base/market/icos/categories/capacitors.pspimage templates/gui/docked/base/market/icos/categories/commodities.pspimage templates/gui/docked/base/market/icos/categories/ecms.pspimage templates/gui/docked/base/market/icos/categories/engines.pspimage templates/gui/docked/base/market/icos/categories/guns.pspimage templates/gui/docked/base/market/icos/categories/missiles.pspimage templates/gui/docked/base/market/icos/categories/modifications.pspimage templates/gui/docked/base/market/icos/categories/power_plants.pspimage templates/gui/docked/base/market/icos/categories/private_storage_room.pspimage templates/gui/docked/base/market/icos/categories/radars.pspimage templates/gui/docked/base/market/icos/categories/shields.pspimage templates/gui/screens/station/content/market/icons/ templates/gui/screens/station/content/market/icons/size.pspimage Removed Paths: ------------- templates/gui/docked/base/market/icos/categories/Capacitor.pspimage templates/gui/docked/base/market/icos/categories/ECM.pspimage templates/gui/docked/base/market/icos/categories/Gun.pspimage templates/gui/docked/base/market/icos/categories/Missile.pspimage templates/gui/docked/base/market/icos/categories/Modification.pspimage templates/gui/docked/base/market/icos/categories/Private storage room.pspimage templates/gui/docked/base/market/icos/categories/Radar.pspimage templates/gui/docked/base/market/icos/categories/Shield.pspimage Deleted: templates/gui/docked/base/market/icos/categories/Capacitor.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/ECM.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Gun.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Missile.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Modification.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Private storage room.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Radar.pspimage =================================================================== (Binary files differ) Deleted: templates/gui/docked/base/market/icos/categories/Shield.pspimage =================================================================== (Binary files differ) Added: templates/gui/docked/base/market/icos/categories/capacitors.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/capacitors.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/commodities.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/commodities.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/ecms.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/ecms.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/engines.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/engines.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/guns.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/guns.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/missiles.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/missiles.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/modifications.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/modifications.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/power_plants.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/power_plants.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/private_storage_room.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/private_storage_room.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/radars.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/radars.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/docked/base/market/icos/categories/shields.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/docked/base/market/icos/categories/shields.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: templates/gui/screens/station/content/market/icons/size.pspimage =================================================================== (Binary files differ) Property changes on: templates/gui/screens/station/content/market/icons/size.pspimage ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-18 08:45:08
|
Revision: 944 http://opengate.svn.sourceforge.net/opengate/?rev=944&view=rev Author: Ultrasick Date: 2009-01-18 08:44:59 +0000 (Sun, 18 Jan 2009) Log Message: ----------- adding an emtpy directory to avoid a hack in the gui Added Paths: ----------- trunk/data/modifications/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-17 20:38:15
|
Revision: 943 http://opengate.svn.sourceforge.net/opengate/?rev=943&view=rev Author: Ultrasick Date: 2009-01-17 20:38:05 +0000 (Sat, 17 Jan 2009) Log Message: ----------- changing the size of the small images a little for the new gui + fixing images of barium and magnetic components Modified Paths: -------------- templates/commodities/magnetic_components.blend trunk/data/capacitors/alembic_small.png trunk/data/capacitors/deepol_small.png trunk/data/capacitors/germ_small.png trunk/data/capacitors/jar_small.png trunk/data/capacitors/lifeline_small.png trunk/data/capacitors/mantra_small.png trunk/data/capacitors/outlet_small.png trunk/data/capacitors/quadro_small.png trunk/data/capacitors/sponge_small.png trunk/data/capacitors/summoner_small.png trunk/data/capacitors/t-c-15_small.png trunk/data/capacitors/tank_small.png trunk/data/commodities/aluminium_small.png trunk/data/commodities/ammunition_small.png trunk/data/commodities/antimony_small.png trunk/data/commodities/armor_small.png trunk/data/commodities/boron_small.png trunk/data/commodities/cesium_small.png trunk/data/commodities/chemicals_small.png trunk/data/commodities/chromium_small.png trunk/data/commodities/copper_small.png trunk/data/commodities/cpus_small.png trunk/data/commodities/electronics_small.png trunk/data/commodities/fiber_optics_small.png trunk/data/commodities/fuel_cells_small.png trunk/data/commodities/gold_small.png trunk/data/commodities/helium_small.png trunk/data/commodities/ice_small.png trunk/data/commodities/iron_small.png trunk/data/commodities/laser_components_small.png trunk/data/commodities/lumber_small.png trunk/data/commodities/manufactured_foods_small.png trunk/data/commodities/medical_supplies_small.png trunk/data/commodities/nitrogen_small.png trunk/data/commodities/octavia_light_small.png trunk/data/commodities/organic_foods_small.png trunk/data/commodities/plutonium_small.png trunk/data/commodities/power_converters_small.png trunk/data/commodities/prostheses_small.png trunk/data/commodities/ram_small.png trunk/data/commodities/rubber_small.png trunk/data/commodities/squadrok_biomass_small.png trunk/data/commodities/tauseti_flashback_small.png trunk/data/commodities/unsigned_box_small.png trunk/data/commodities/uranium_small.png trunk/data/commodities/water_small.png trunk/data/commodities/xenon_small.png trunk/data/commodities/zinc_small.png trunk/data/engines/money_small.png trunk/data/engines/t-e-15_small.png trunk/data/guns/bender_small.png trunk/data/guns/duster_small.png trunk/data/guns/excavator_small.png trunk/data/guns/liar_small.png trunk/data/guns/t-g-28_small.png trunk/data/missiles/bee_small.png trunk/data/missiles/firefly_small.png trunk/data/power_plants/contender_small.png trunk/data/power_plants/contender_xl_small.png trunk/data/power_plants/contender_xpr_small.png trunk/data/power_plants/gatherer_small.png trunk/data/power_plants/spud_small.png trunk/data/power_plants/t-p-16_small.png trunk/data/radars/chime_small.png trunk/data/radars/cyclops_small.png trunk/data/radars/hall_monitor_small.png trunk/data/radars/knocker_small.png trunk/data/radars/night_watchman_small.png trunk/data/radars/outlook_small.png trunk/data/radars/t-r-9_small.png trunk/data/shields/alpaa_small.png trunk/data/shields/flatiron_small.png trunk/data/shields/himelea_small.png trunk/data/shields/kydango_small.png trunk/data/shields/pod_small.png trunk/data/shields/shelter_small.png trunk/data/shields/t-s-13_small.png Added Paths: ----------- trunk/data/commodities/barium_big.png trunk/data/commodities/barium_small.png trunk/data/commodities/magnetic_components_big.png trunk/data/commodities/magnetic_components_small.png Removed Paths: ------------- trunk/data/commodities/barium.png trunk/data/commodities/magnetic_components.png Modified: templates/commodities/magnetic_components.blend =================================================================== (Binary files differ) Modified: trunk/data/capacitors/alembic_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/deepol_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/germ_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/jar_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/lifeline_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/mantra_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/outlet_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/quadro_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/sponge_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/summoner_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/t-c-15_small.png =================================================================== (Binary files differ) Modified: trunk/data/capacitors/tank_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/aluminium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/ammunition_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/antimony_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/armor_small.png =================================================================== (Binary files differ) Deleted: trunk/data/commodities/barium.png =================================================================== (Binary files differ) Added: trunk/data/commodities/barium_big.png =================================================================== (Binary files differ) Property changes on: trunk/data/commodities/barium_big.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/data/commodities/barium_small.png =================================================================== (Binary files differ) Property changes on: trunk/data/commodities/barium_small.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/data/commodities/boron_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/cesium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/chemicals_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/chromium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/copper_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/cpus_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/electronics_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/fiber_optics_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/fuel_cells_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/gold_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/helium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/ice_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/iron_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/laser_components_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/lumber_small.png =================================================================== (Binary files differ) Deleted: trunk/data/commodities/magnetic_components.png =================================================================== (Binary files differ) Added: trunk/data/commodities/magnetic_components_big.png =================================================================== (Binary files differ) Property changes on: trunk/data/commodities/magnetic_components_big.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/data/commodities/magnetic_components_small.png =================================================================== (Binary files differ) Property changes on: trunk/data/commodities/magnetic_components_small.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/data/commodities/manufactured_foods_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/medical_supplies_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/nitrogen_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/octavia_light_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/organic_foods_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/plutonium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/power_converters_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/prostheses_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/ram_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/rubber_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/squadrok_biomass_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/tauseti_flashback_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/unsigned_box_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/uranium_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/water_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/xenon_small.png =================================================================== (Binary files differ) Modified: trunk/data/commodities/zinc_small.png =================================================================== (Binary files differ) Modified: trunk/data/engines/money_small.png =================================================================== (Binary files differ) Modified: trunk/data/engines/t-e-15_small.png =================================================================== (Binary files differ) Modified: trunk/data/guns/bender_small.png =================================================================== (Binary files differ) Modified: trunk/data/guns/duster_small.png =================================================================== (Binary files differ) Modified: trunk/data/guns/excavator_small.png =================================================================== (Binary files differ) Modified: trunk/data/guns/liar_small.png =================================================================== (Binary files differ) Modified: trunk/data/guns/t-g-28_small.png =================================================================== (Binary files differ) Modified: trunk/data/missiles/bee_small.png =================================================================== (Binary files differ) Modified: trunk/data/missiles/firefly_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/contender_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/contender_xl_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/contender_xpr_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/gatherer_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/spud_small.png =================================================================== (Binary files differ) Modified: trunk/data/power_plants/t-p-16_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/chime_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/cyclops_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/hall_monitor_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/knocker_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/night_watchman_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/outlook_small.png =================================================================== (Binary files differ) Modified: trunk/data/radars/t-r-9_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/alpaa_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/flatiron_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/himelea_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/kydango_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/pod_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/shelter_small.png =================================================================== (Binary files differ) Modified: trunk/data/shields/t-s-13_small.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-17 17:57:14
|
Revision: 942 http://opengate.svn.sourceforge.net/opengate/?rev=942&view=rev Author: Ultrasick Date: 2009-01-17 17:57:05 +0000 (Sat, 17 Jan 2009) Log Message: ----------- removed damage info from squid xmls but added child_id to squid guns + added life time and velocity values for squid guns + removed range value from info file, because it is the product of life time and velocity and thouse values are in opacma now + added position values into station xmls Modified Paths: -------------- doc/data/ships/squadrok/info.txt trunk/data/ships/squadrok/squid_1/squid_1.xml trunk/data/ships/squadrok/squid_2/squid_2.xml trunk/data/ships/squadrok/squid_3/squid_3.xml trunk/data/stations/octavius_core.xml trunk/data/stations/tauseti_core.xml trunk/data/stations/tauseti_wake.xml Added Paths: ----------- trunk/data/guns/squid_1_laser_emitter.xml trunk/data/guns/squid_2_laser_emitter.xml trunk/data/guns/squid_3_laser_emitter.xml Modified: doc/data/ships/squadrok/info.txt =================================================================== --- doc/data/ships/squadrok/info.txt 2009-01-17 17:06:03 UTC (rev 941) +++ doc/data/ships/squadrok/info.txt 2009-01-17 17:57:05 UTC (rev 942) @@ -12,12 +12,6 @@ Damage: 180k Range: 1000m * = Rank 5 or lower. Otherwise 10. -[C-1 Squid] - Range: 1000m -[C-2 Squid] - Range: 1000m -[C-3 Squid] - Range: 1200m [C-4 Snail] Bounty: 1550 Experience: 325 Added: trunk/data/guns/squid_1_laser_emitter.xml =================================================================== --- trunk/data/guns/squid_1_laser_emitter.xml (rev 0) +++ trunk/data/guns/squid_1_laser_emitter.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>871</object_id> + <life_time>0.1</life_time> + <name_de>Squid 1 Laseremitter</name_de> + <name_en>Squid 1 laser emitter</name_en> + <category_id>10</category_id> + <faction_id>4</faction_id> + <required_rank>1</required_rank> + <type>laser</type> + <size>1</size> + <velocity>10000</velocity> + <damage>180</damage> +</container> \ No newline at end of file Property changes on: trunk/data/guns/squid_1_laser_emitter.xml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/data/guns/squid_2_laser_emitter.xml =================================================================== --- trunk/data/guns/squid_2_laser_emitter.xml (rev 0) +++ trunk/data/guns/squid_2_laser_emitter.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>872</object_id> + <life_time>0.1</life_time> + <name_de>Squid 2 Laseremitter</name_de> + <name_en>Squid 2 laser emitter</name_en> + <category_id>10</category_id> + <faction_id>4</faction_id> + <required_rank>2</required_rank> + <type>laser</type> + <size>1</size> + <velocity>10000</velocity> + <damage>240</damage> +</container> \ No newline at end of file Property changes on: trunk/data/guns/squid_2_laser_emitter.xml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/data/guns/squid_3_laser_emitter.xml =================================================================== --- trunk/data/guns/squid_3_laser_emitter.xml (rev 0) +++ trunk/data/guns/squid_3_laser_emitter.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>873</object_id> + <life_time>0.12</life_time> + <name_de>Squid 3 Laseremitter</name_de> + <name_en>Squid 3 laser emitter</name_en> + <category_id>10</category_id> + <faction_id>4</faction_id> + <required_rank>3</required_rank> + <type>laser</type> + <size>1</size> + <velocity>10000</velocity> + <damage>300</damage> +</container> \ No newline at end of file Property changes on: trunk/data/guns/squid_3_laser_emitter.xml ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/data/ships/squadrok/squid_1/squid_1.xml =================================================================== --- trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-17 17:06:03 UTC (rev 941) +++ trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -14,5 +14,5 @@ <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <maximum_deflection>4500</maximum_deflection> - <damage>180</damage> + <child_id>870</child_id> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_2/squid_2.xml =================================================================== --- trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-17 17:06:03 UTC (rev 941) +++ trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -14,5 +14,5 @@ <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <maximum_deflection>4500</maximum_deflection> - <damage>240</damage> + <child_id>871</child_id> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_3/squid_3.xml =================================================================== --- trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-17 17:06:03 UTC (rev 941) +++ trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-17 17:57:05 UTC (rev 942) @@ -14,5 +14,5 @@ <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <armor>220</armor> <maximum_deflection>5000</maximum_deflection> - <damage>300</damage> + <child_id>872</child_id> </container> \ No newline at end of file Modified: trunk/data/stations/octavius_core.xml =================================================================== (Binary files differ) Modified: trunk/data/stations/tauseti_core.xml =================================================================== (Binary files differ) Modified: trunk/data/stations/tauseti_wake.xml =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <spo...@us...> - 2009-01-17 17:06:17
|
Revision: 941 http://opengate.svn.sourceforge.net/opengate/?rev=941&view=rev Author: spom_spom Date: 2009-01-17 17:06:03 +0000 (Sat, 17 Jan 2009) Log Message: ----------- basics of reorganization done. network, radar and most sector stuff are still down. Modified Paths: -------------- trunk/src/AiManager.cpp trunk/src/BaseObject.cpp trunk/src/DockedState.cpp trunk/src/GameState.h trunk/src/GameStateManager.cpp trunk/src/GameStateManager.h trunk/src/Makefile.am trunk/src/OpcodeWrapper.cpp trunk/src/Opengate.h trunk/src/Projectile.cpp trunk/src/Sector.cpp trunk/src/Sector.h trunk/src/SectorBaseObject.cpp trunk/src/SectorBaseObject.h trunk/src/SectorCollisionObject.cpp trunk/src/SectorCollisionObject.h trunk/src/SectorMeshObject.cpp trunk/src/SectorMeshObject.h trunk/src/SectorMovableObject.cpp trunk/src/SectorMovableObject.h trunk/src/SectorObjectAvatar.cpp trunk/src/SectorObjectVessel.cpp trunk/src/SectorObjectVessel.h trunk/src/Station.cpp trunk/src/UnDockedState.cpp trunk/src/UnDockedState.h trunk/src/Vessel.cpp trunk/src/Vessel.h trunk/src/common.h trunk/src/opengateclient.cpp Added Paths: ----------- trunk/src/Hud.cpp trunk/src/Hud.h trunk/src/SectorAvatarObject.cpp trunk/src/SectorAvatarObject.h trunk/src/SectorVesselObject.cpp trunk/src/SectorVesselObject.h Modified: trunk/src/AiManager.cpp =================================================================== --- trunk/src/AiManager.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/AiManager.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -111,10 +111,6 @@ if ( resources_ ){ if ( resources_->gameStateRoot->activeState( )->name() == "UnDockedState" ){ - obj = dynamic_cast < UnDockedState *>(resources_->gameStateRoot->activeState() )->sector()-> - createVessel( ai->name(), - resources_->network->userID(), 0, - *resources_->entityManager->vessel( "apteryx" ) ); obj->vessel( )->setPowerPlant( resources_->entityManager->powerPlant( "Spud" ) ); obj->vessel( )->setEngine( resources_->entityManager->engine( "T-E-15" ) ); @@ -147,7 +143,7 @@ // dynamic_cast < UnDockedState *>(resources_->gameStateRoot->activeState() // )->sector()->station()->launchPadOrientation() ); - ai->land( dynamic_cast < UnDockedState *>(resources_->gameStateRoot->activeState() )->sector()->station() ); + // ai->land( dynamic_cast < UnDockedState *>(resources_->gameStateRoot->activeState() )->sector()->station() ); } startAiObject( ai ); Modified: trunk/src/BaseObject.cpp =================================================================== --- trunk/src/BaseObject.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/BaseObject.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -34,7 +34,7 @@ : name_( name ), sector_( sector ), userID_( userID ), childID_( childID ), mainNode_( NULL ), parentNode_( parentNode ), collObj_( NULL ){ globalID_ = createGlobalID( userID, childID ); - sceneMgr_ = sector_->pSceneManager(); + sceneMgr_ = sector_->sceneManager(); if ( !parentNode_ ) parentNode_ = sceneMgr_->getRootSceneNode(); try{ Modified: trunk/src/DockedState.cpp =================================================================== --- trunk/src/DockedState.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/DockedState.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -112,51 +112,49 @@ } void DockedState::enter( ) { - log_->info("Entering dockstate"); - resources_->guiRenderer->setTargetSceneManager( sceneMgr_ ); - resources_->guiSystem->setGUISheet( overlayRootWindow_ ); - overlayRootWindow_->show(); - resources_->console->start(); + log_->info("Entering " + this->name() ); + resources_->guiRenderer->setTargetSceneManager( sceneMgr_ ); + resources_->guiSystem->setGUISheet( overlayRootWindow_ ); + overlayRootWindow_->show(); + resources_->console->start(); - resources_->inputManager->addKeyListener( this, "DockedStateKeyListener" ); - resources_->inputManager->addMouseListener( this, "DockedStateMouseListener" ); + resources_->inputManager->addKeyListener( this, "DockedStateKeyListener" ); + resources_->inputManager->addMouseListener( this, "DockedStateMouseListener" ); - resources_->guiSystem->setDefaultMouseCursor( (CEGUI::utf8*)"opengateCursor", (CEGUI::utf8*)"Cursor1" ); + resources_->guiSystem->setDefaultMouseCursor( (CEGUI::utf8*)"opengateCursor", (CEGUI::utf8*)"Cursor1" ); - Ogre::Viewport * vp = resources_->renderWindow->addViewport( sceneMgr_->getCamera( "StationCamera" ), 0, 0.0, 0.0, 1.0f, 1.0f ); - vp->setBackgroundColour( Ogre::ColourValue( 0, 0, 0) ); - minimiseConsole( ); + Ogre::Viewport * vp = resources_->renderWindow->addViewport( sceneMgr_->getCamera( "StationCamera" ), 0, 0.0, 0.0, 1.0f, 1.0f ); + vp->setBackgroundColour( Ogre::ColourValue( 0, 0, 0) ); + minimiseConsole( ); - CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->subscribeEvent( - CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber( &DockedState::handleConfigBackButton, this ) ) ; - exitToUndockedState_ = false; - quitAllStates_ = false; + CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->subscribeEvent( + CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber( &DockedState::handleConfigBackButton, this ) ) ; + exitToUndockedState_ = false; + quitAllStates_ = false; - std::cout << "soundManager->listener "<< std::endl; - if ( resources_->soundManager->listener() ){ resources_->soundManager->listener()->reset(); } - std::cout << "backgroundSound_ "<< backgroundSound_ << std::endl; - - backgroundSound_->play(); - std::cout << "backgroundSound_ "<< std::endl; + if ( resources_->soundManager->listener() ){ resources_->soundManager->listener()->reset(); } + backgroundSound_->play(); } void DockedState::exit(){ - backgroundSound_->stop(); + log_->info("Exiting " + this->name() ); - CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->removeEvent( - CEGUI::PushButton::EventClicked ); + backgroundSound_->stop(); - log_->info("Exiting dockstate"); - overlayRootWindow_->hide(); - resources_->console->stop(); + CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"Config/BackButton" )->removeEvent( + CEGUI::PushButton::EventClicked ); - resources_->renderWindow->removeAllViewports(); - resources_->inputManager->removeKeyListener( "DockedStateKeyListener" ); - resources_->inputManager->removeMouseListener( "DockedStateMouseListener" ); + overlayRootWindow_->hide(); + resources_->console->stop(); + CEGUI::MouseCursor::getSingleton().hide(); + + resources_->renderWindow->removeAllViewports(); + resources_->inputManager->removeKeyListener( "DockedStateKeyListener" ); + resources_->inputManager->removeMouseListener( "DockedStateMouseListener" ); } void DockedState::changeToUnDockedState(){ - exitToUndockedState_ = true; + exitToUndockedState_ = true; } bool DockedState::frameStarted( const Ogre::FrameEvent & evt ){ Modified: trunk/src/GameState.h =================================================================== --- trunk/src/GameState.h 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/GameState.h 2009-01-17 17:06:03 UTC (rev 941) @@ -66,10 +66,10 @@ virtual void changeGameState( GameState * state ) = 0; /*! Push state onto the stack. */ - virtual bool pushGameState( GameState * state ) = 0; + //virtual bool pushGameState( GameState * state ) = 0; /*! Pop a game state off the stack. */ - virtual void popGameState() = 0; + //virtual void popGameState() = 0; /*! Cause a shutdown. */ virtual void shutdown() = 0; @@ -169,10 +169,10 @@ void changeGameState( GameState *state ) { parent_->changeGameState( state ); } /*! Push game state onto the stack. */ - bool pushGameState( GameState * state ) { return parent_->pushGameState( state ); } + // bool pushGameState( GameState * state ) { return parent_->pushGameState( state ); } /*! Pop a game state off the stack. */ - void popGameState( void ) { parent_->popGameState(); } + //void popGameState( void ) { parent_->popGameState(); } /*! Cause a shutdown. */ void shutdown( void ) { parent_->shutdown(); } Modified: trunk/src/GameStateManager.cpp =================================================================== --- trunk/src/GameStateManager.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/GameStateManager.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -66,15 +66,15 @@ // delete resources_->guiSystem; // delete resources_->guiRenderer; - while ( !stateStack_.empty() ){ - cleanup_( stateStack_.back() ); - stateStack_.back()->exit(); - stateStack_.pop_back(); - } - while( !states_.empty() ){ - states_.back().state->destroy(); - states_.pop_back(); - } + while ( !stateStack_.empty() ){ + cleanup_( stateStack_.back() ); + stateStack_.back()->exit(); + stateStack_.pop_back(); + } + while( !states_.empty() ){ + states_.back().state->destroy(); + states_.pop_back(); + } if ( resources_.aiManager ) { log_->info( "Shutdown ai manager." ); @@ -392,7 +392,7 @@ void GameStateManager::switchConfigDialog( ){ if ( configDialog_->isVisible() ) { configDialog_->hide(); - } else{ + } else { configDialog_->show(); } } @@ -462,29 +462,13 @@ MessageBodyChat msg( &msgs[ i ][ 0 ] ); log_->chat( resources_.network->userName( msg.senderID() ), msg.message() ); } break; - case PROTO_SHIP_REGISTER: - if ( sector ) sector->receiveVesselRegister( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIP_DEREGISTER: - if ( sector ) sector->receiveVesselDeRegister( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIP_DIED: - if ( sector ) sector->receiveVesselDied( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIP_STATUS: - if ( sector ) sector->receiveVesselStatus( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIP_MOVEMENT:{ - //** we handle that in sum, so we can ignore dups because of packet loss - MessageBodyShipMovement *msg = new MessageBodyShipMovement( &msgs[ i ][ 0 ] ); - movements.push_back( msg ); - } break; - case PROTO_SHIP_PROJECTILEFIRED: - if ( sector ) sector->receiveProjectile( &msgs[ i ][ 0 ] ); break; - case PROTO_SHIP_AMMOHIT: - if ( sector ) sector->receiveVesselAmmoHit( &msgs[ i ][ 0 ] ); break; + default: std::cerr << "PROTO type unknown: " << msgs[ i ][ 0 ] << " " << msgs[ i ].size() << std::endl; break; } } - if ( movements.size() > 0 && sector ) sector->receiveVesselMovement( movements ); + // if ( movements.size() > 0 && sector ) sector->receiveVesselMovement( movements ); } return true; } @@ -503,10 +487,13 @@ } void GameStateManager::changeGameState( GameState * state ){ + std::cout << "GameStateManager::changeGameState( GameState * state )" << state->name() << std::endl; // cleanup the current game state if ( !stateStack_.empty() ) { + //** remove old state from framelistener cleanup_( stateStack_.back() ); if ( stateStack_.back()->rootWindow() ) stateStack_.back()->rootWindow()->removeChildWindow( configDialog_->rootWindow() ); + std::cout << "stateStack_.back()->exit();" << stateStack_.back()->name() << std::endl; stateStack_.back()->exit(); stateStack_.pop_back(); } @@ -518,40 +505,40 @@ init_( state ); } -bool GameStateManager::pushGameState( GameState * state ){ - // pause current game state - if ( !stateStack_.empty() ) { - if ( !stateStack_.back()->pause() ){ - return false; - } - cleanup_( stateStack_.back() ); - } +// bool GameStateManager::pushGameState( GameState * state ){ +// // pause current game state +// if ( !stateStack_.empty() ) { +// if ( !stateStack_.back()->pause() ){ +// return false; +// } +// cleanup_( stateStack_.back() ); +// } +// +// // store and init the new state +// stateStack_.push_back( state ); +// init_( state ); +// stateStack_.back()->enter(); +// +// return true; +// } +// +// void GameStateManager::popGameState( ) { +// // cleanup the current game state +// if ( !stateStack_.empty() ) { +// cleanup_( stateStack_.back() ); +// stateStack_.back()->exit(); +// stateStack_.pop_back(); +// } +// +// // resume previous game state or quit if there isn't one +// if ( !stateStack_.empty() ) { +// init_( stateStack_.back() ); +// stateStack_.back()->resume(); +// } else { +// shutdown(); +// } +// } - // store and init the new state - stateStack_.push_back( state ); - init_( state ); - stateStack_.back()->enter(); - - return true; -} - -void GameStateManager::popGameState( ) { - // cleanup the current game state - if ( !stateStack_.empty() ) { - cleanup_( stateStack_.back() ); - stateStack_.back()->exit(); - stateStack_.pop_back(); - } - - // resume previous game state or quit if there isn't one - if ( !stateStack_.empty() ) { - init_( stateStack_.back() ); - stateStack_.back()->resume(); - } else { - shutdown(); - } -} - void GameStateManager::shutdown( ){ shutdownRequest_ = true; } Modified: trunk/src/GameStateManager.h =================================================================== --- trunk/src/GameStateManager.h 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/GameStateManager.h 2009-01-17 17:06:03 UTC (rev 941) @@ -111,10 +111,10 @@ void changeGameState( GameState * state ); /*! Push a game state onto the stack. This pauses the current game state and begins a new game state. If the current game state refuses to be paused, this will return false. */ - bool pushGameState( GameState * state ); + //bool pushGameState( GameState * state ); /*! Pop a game state off the stack. This destroys the current game state and returns control to the previous game state. */ - void popGameState( ); + // void popGameState( ); void CMD_shutdown( const std::vector < std::string > & argv ); void CMD_printHelp( const std::vector < std::string > & argv ); Added: trunk/src/Hud.cpp =================================================================== --- trunk/src/Hud.cpp (rev 0) +++ trunk/src/Hud.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -0,0 +1,383 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "Hud.h" + +#include "Avatar.h" +#include "ResourceManager.h" +#include "Sector.h" +#include "SectorAvatarObject.h" +#include "networkClient.h" + +#include <iostream> + +#include <OgreEntity.h> +#include <OgreFontManager.h> +#include <OgreRoot.h> +#include <OgreRenderWindow.h> +#include <OgreOverlayManager.h> +#include <OgreStringConverter.h> +#include <OgreTextAreaOverlayElement.h> +#include <OgreMaterialManager.h> + +#include <CEGUI/elements/CEGUIPushButton.h> +#include <CEGUI/CEGUIWindowManager.h> +#include <CEGUI/CEGUIWindow.h> + +namespace OpenGate{ + +Hud::Hud( CEGUI::Window * overlayRoot, SectorAvatarObject * avatar ) : overlayRootWindow_( overlayRoot ), avatar_( avatar ){ + resources_ = ResourceManager::getSingletonPtr(); + sceneMgr_ = avatar_->sector()->sceneManager(); + + init(); + show(); +} + +Hud::~Hud(){ + hide(); + avatar_->sector()->sceneManager()->destroyEntity( "FlightArrow/Entity" ); + flightArrowNode_->removeAndDestroyChild( "FlightArrow/TransNode" ); + Ogre::SceneNode * par = flightArrowNode_->getParentSceneNode(); + par->removeAndDestroyChild( flightArrowNode_->getName() ); +} + +void Hud::init( ){ + + windowsWidth_ = resources_->renderWindow->getWidth( ); + windowsHeight_ = resources_->renderWindow->getHeight( ); + windowsHalfWidth_ = (int)( windowsWidth_ * 0.5 ); + windowsHalfHeight_ = (int)( windowsHeight_ * 0.5 ); + + //** OGRE 3D stuff in front of the camera + Ogre::SceneNode * mainCameraNode = sceneMgr_->getSceneNode( "MainCamera" ); + flightArrowNode_ = mainCameraNode->createChildSceneNode( "FlightArrow/MainNode" ); + Ogre::SceneNode * flightArrowTrans = flightArrowNode_->createChildSceneNode( "FlightArrow/TransNode" ); + Ogre::Entity * flightArrowEntity = sceneMgr_->createEntity( "FlightArrow/Entity", "arrow.mesh" ); + flightArrowEntity->setMaterialName( "SimpleHUD/FlightArrow" ); +//flightArrowEntity->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY); + flightArrowTrans->attachObject( flightArrowEntity ); + flightArrowTrans->pitch( Ogre::Degree( -90 ) ); + flightArrowTrans->scale( 0.01, 0.01, 0.01 ); + flightArrowNode_->setPosition( 0.0, 0.08, -1.2 ); + + + //** OGRE overlay based stuff + overlayName_ = "SimpleHUD"; + hudOverlay_ = Ogre::OverlayManager::getSingleton().getByName( overlayName_ ); +// mousePointer_ = hudOverlay_->getChild( overlayName_ + "/FlightCursor" ); +// mousePointer_->setTop( windowsHalfHeight_ - mousePointer_->getHeight() / 2 ); +// mousePointer_->setLeft( windowsHalfWidth_ - mousePointer_->getWidth() / 2 ); +// mousePointer_->hide(); + hudOverlay_->show(); + + + //** CEGUI based stuff + targetCursor_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetCursor" ); + targetCursorHalfWidth_ = targetCursor_->getWidth().asAbsolute( 0.0 ) / 2.0; + targetCursorHalfHeight_ = targetCursor_->getHeight().asAbsolute( 0.0 ) / 2.0; + targetCursor_->hide(); + + pilotFlightCursor_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDPilotFlightCursor" ); + pilotFlightCursorHalfWidth_ = pilotFlightCursor_->getWidth().asAbsolute( 0.0 ) / 2.0; + pilotFlightCursorHalfHeight_ = pilotFlightCursor_->getHeight().asAbsolute( 0.0 ) / 2.0; + pilotFlightCursor_->hide(); + + targetFlightCursor_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetFlightCursor" ); + targetFlightCursorHalfWidth_ = targetFlightCursor_->getWidth().asAbsolute( 0.0 ) / 2.0; + targetFlightCursorHalfHeight_ = targetFlightCursor_->getHeight().asAbsolute( 0.0 ) / 2.0; + targetFlightCursor_->hide(); + + velocityProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDVelocityProgress" ); + velocityProgressHeight_ = velocityProgress_->getHeight().asAbsolute( 0.0 ); + velocityProgressImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDVelocity" ); + velocityProgressImg_->setClippedByParent( true ); + + thrustProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDThrustProgress" ); + thrustProgressHeight_ = thrustProgress_->getHeight().asAbsolute( 0.0 ); + thrustProgressImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDThrust" ); + thrustProgressImg_->setClippedByParent( true ); + + fuelProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDFuelProgress" ); + fuelProgressHeight_ = fuelProgress_->getHeight().asAbsolute( 0.0 ); + fuelProgressImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDFuel" ); + fuelProgressImg_->setClippedByParent( true ); + + capacitorProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDCapacitorProgress" ); + capacitorProgressHeight_ = capacitorProgress_->getHeight().asAbsolute( 0.0 ); + capacitorProgressImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDCapacitor" ); + capacitorProgressImg_->setClippedByParent( true ); + + armorProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDArmorProgress" ); + armorProgressHeight_ = armorProgress_->getHeight().asAbsolute( 0.0 ); + armorProgressLeftImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDArmorLeft" ); + armorProgressRightImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDArmorRight" ); + armorProgressLeftImg_->setClippedByParent( true ); + armorProgressRightImg_->setClippedByParent( true ); + + shieldProgress_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDShieldProgress" ); + shieldProgressHeight_ = shieldProgress_->getHeight().asAbsolute( 0.0 ); + shieldProgressLeftImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDShieldLeft" ); + shieldProgressRightImg_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDShieldRight" ); + shieldProgressLeftImg_->setClippedByParent( true ); + shieldProgressRightImg_->setClippedByParent( true ); + + velocityText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDVelocityText" ); + conText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDConText" ); + shieldText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDShieldText" ); + armorText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDArmorText" ); + + targetDistanceText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetDistanceText" ); + targetVelocity_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetVelocityText" ); + targetShieldText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetShieldText" ); + targetArmorText_ = CEGUI::WindowManager::getSingleton().getWindow( "HUDTargetArmorText" ); + +// resources_->guiSystem->setDefaultMouseCursor( (CEGUI::utf8*)"opengate", (CEGUI::utf8*)"MouseArrow" ); +// CEGUI::MouseCursor::getSingleton().setImage( (CEGUI::utf8*)"opengate", (CEGUI::utf8*)"MouseArrow" ); + + + + +// duelistPilot_ = false; +// duelistTarget_ = false; + + + + + // targetPointer_ = mainCamera_->getSceneManager()->getRootSceneNode()->createChildSceneNode( "TargetPointer" ); +// BillboardSet* mySet = mainCamera_->getSceneManager()->createBillboardSet("mySet"); +// targetPointerBB_ = mySet->createBillboard( Vector3(0, 0, 0) ); +// mySet->setMaterialName( "TargetPointer" ); +// targetPointerBB_->setDimensions( 32.0, 32.0 ); + +// targetPointer_->attachObject( mySet ); +// targetPointer_->scale( 0.05, 0.05, 0.05 ); + + +// BillboardSet *targetPointerBillboard = mainCamera_->getSceneManager()->createBillboardSet( "hudTargetPointer" ); +// targetPointerBillboard->setMaterialName( "TargetPointer" ); +// Billboard * hudTargetPointer = targetPointerBillboard->createBillboard( Ogre::Vector3( 0.0, 0.0, -100 ) ); +// hudTargetPointer-> + + +// statsOn_ = true; + + +} + +void Hud::update( Ogre::Real elapsedTime ){ + + + const Ogre::RenderTarget::FrameStats & stats = resources_->renderWindow->getStatistics(); + Ogre::OverlayManager::getSingleton().getOverlayElement( overlayName_ + "/MainPanel/StatsTextArea" ) + ->setCaption( "fps: " + toStr( stats.lastFPS ) + " ping: " + + toStr( resources_->network->pingTime() ) + " ms" ); + + + if ( hudIsVisible_ && avatar_ != NULL ){ + + Ogre::Vector3 flightDir( avatar_->velocity().normalisedCopy() ); + Ogre::Quaternion flightOrient( avatar_->mainNode()->getOrientation() ); + + //** flight arrow; + if ( flightArrowNode_ ) { + if ( fabs( avatar_->speed() ) > 1e-1 ){ + flightArrowNode_->setVisible( true ); + //flightArrowNode_->setOrientation( flightOrient ); + flightArrowNode_->setDirection( flightDir, Ogre::Node::TS_WORLD ); + } else { + flightArrowNode_->setVisible( false ); + } + } + +// if ( target_ != NULL ) { +// Ogre::Vector3 distToTarget( ( target_->mainNode()->getPosition() - +// avatar_->mainNode()->getPosition() ) ); +// +// // if ( avatar_->targetArrow() ) { +// // avatar_->targetArrow()->setVisible( true ); +// // avatar_->targetArrow()->setOrientation( flightOrient ); +// // avatar_->targetArrow()->setDirection( distToTarget.normalisedCopy(), Ogre::Node::TS_WORLD ); +// // } +// +// //** Start update targeting pointer and duelist pointers; +// Ogre::Vector3 targetScreenPos; +// target_->mainNode()->needUpdate(); +// +// Ogre::Vector3 targetPos( target_->mainNode()->getPosition() ); +// +// bool targetVisible = projectionPos_( mainCamera_, targetPos, targetScreenPos ); +// if ( targetVisible ){ +// targetCursor_->show(); +// targetCursor_->setPosition( CEGUI::UVector2( CEGUI::UDim( 0.5 + targetScreenPos[ 0 ] / 2.0, +// -targetCursorHalfWidth_ ), +// CEGUI::UDim( 0.5 - targetScreenPos[ 1 ] / 2.0, +// -targetCursorHalfHeight_ ) ) ); +// } else { +// targetCursor_->hide(); +// } +// +// //Ogre::Real ammoTimeToTarget( distToTarget.length() / avatar_->ammoSpeed() ); +// +// +// //** End update targeting pointer and duelist pointers; +// +// targetDistanceText_->setText( "D" + Ogre::StringConverter::toString( round( distToTarget.length(), 0 ) ) ); +// +// if ( target_->rtti() == SECTOROBJECTMOVABLE_RTTI || +// target_->rtti() == SECTOROBJECTVESSEL_RTTI || +// target_->rtti() == SECTOROBJECTMISSILE_RTTI ){ +// +// targetVelocity_->setText( "V" + Ogre::StringConverter::toString( round( +// dynamic_cast< SectorObjectMovable *>( target_ )->speed(), 2 ), 4 ) ); +// targetShieldText_->setText( "S" + Ogre::StringConverter::toString( round( +// dynamic_cast< SectorObjectMovable *>( target_ )->shieldRate() * 100.0f, 1), 4 ) ); +// targetArmorText_->setText( "A" + Ogre::StringConverter::toString( round( +// dynamic_cast< SectorObjectMovable *>( target_ )->armorRate() * 100.0f, 1), 4 ) ); +// +// } else{ +// targetVelocity_->setText( "" ); +// targetShieldText_->setText( "" ); +// targetArmorText_->setText( "" ); +// } +// } else { +// // if ( avatar_->targetArrow() ) avatar_->targetArrow()->setVisible( false ); +// } + + Ogre::Real height = avatar_->speedRate() * velocityProgressHeight_; + velocityProgress_->setYPosition( CEGUI::UDim( 0.5, velocityProgressHeight_/2.0 - height ) ); + velocityProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); + velocityProgressImg_->setYPosition( CEGUI::UDim( 0, -velocityProgressHeight_ + height ) ); + // +// height = avatar_->capacityRate() * capacitorProgressHeight_; +// // std::cout << height << " " << capacitorProgressHeight_ << " " << avatar_->capacity() << " " << avatar_->maxCapacity() << std::endl; +// capacitorProgress_->setYPosition( CEGUI::UDim( 0.5, capacitorProgressHeight_/2.0 - height ) ); +// capacitorProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); +// capacitorProgressImg_->setYPosition( CEGUI::UDim( 0, -capacitorProgressHeight_ + height ) ); + // + height = avatar_->thrustRate() * thrustProgressHeight_; + thrustProgress_->setYPosition( CEGUI::UDim( 0.5, thrustProgressHeight_/2.0 - height ) ); + thrustProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); + thrustProgressImg_->setYPosition( CEGUI::UDim( 0, -thrustProgressHeight_ + height ) ); + // +// height = avatar_->shieldRate() * shieldProgressHeight_; +// shieldProgress_->setYPosition( CEGUI::UDim( 0.5, - height + height/2.0 ) ); +// shieldProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); +// shieldProgressLeftImg_->setYPosition( CEGUI::UDim( 0.5, -shieldProgressHeight_/2.0 ) ); +// shieldProgressRightImg_->setYPosition( CEGUI::UDim( 0.5, -shieldProgressHeight_/2.0 ) ); + // +// height = avatar_->armorRate() * armorProgressHeight_; +// armorProgress_->setYPosition( CEGUI::UDim( 0.5, - height + height/2.0 ) ); +// armorProgress_->setHeight( CEGUI::UDim( 0.0, height ) ); +// armorProgressLeftImg_->setYPosition( CEGUI::UDim( 0.5, -armorProgressHeight_/2.0 ) ); +// armorProgressRightImg_->setYPosition( CEGUI::UDim( 0.5, -armorProgressHeight_/2.0 ) ); + // +// if ( avatar_->breakPressed() ){ +// velocityText_->setProperty( "TextColours", "ffff0000" ); +// } else if (avatar_->afterburnerPressed()){ +// velocityText_->setProperty( "TextColours", "ff00ff00" ); +// } else { +// velocityText_->setProperty( "TextColours", "ffffffff" ); +// } + velocityText_->setText( "V" + Ogre::StringConverter::toString( round( (Ogre::Real)avatar_->speed(), 2 ), 4 ) ); +// shieldText_->setText( "S" + Ogre::StringConverter::toString( avatar_->shieldRate() * 100.0f, 4 ) ); +// armorText_->setText( "A" + Ogre::StringConverter::toString( avatar_->armorRate() * 100.0f, 4 ) ); + + + + // OverlayElement* guiAvg = OverlayManager::getSingleton().getOverlayElement("Core/AverageFps"); + // OverlayElement* guiCurr = OverlayManager::getSingleton().getOverlayElement("Core/CurrFps"); + // OverlayElement* guiBest = OverlayManager::getSingleton().getOverlayElement("Core/BestFps"); + // OverlayElement* guiWorst = OverlayManager::getSingleton().getOverlayElement("Core/WorstFps"); + // guiAvg->setCaption(avgFps + StringConverter::toString(stats.avgFPS)); + // guiBest->setCaption(bestFps + StringConverter::toString(stats.bestFPS) + // +" "+StringConverter::toString(stats.bestFrameTime)+" ms"); + // guiWorst->setCaption(worstFps + StringConverter::toString(stats.worstFPS) + // +" "+StringConverter::toString(stats.worstFrameTime)+" ms"); + + // OverlayElement* guiTris = OverlayManager::getSingleton().getOverlayElement("Core/NumTris"); + // guiTris->setCaption(tris + StringConverter::toString(stats.triangleCount)); + + // OverlayElement* guiDbg = OverlayManager::getSingleton().getOverlayElement("Core/DebugText"); + // guiDbg->setCaption( window_->getDebugText() ); + // } + // catch(...) { + // // ignore + // } + } // if hudIsVisible_; +} + +void Hud::show(){ + hudIsVisible_ = true; + CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"UnDocked/MainWindow/ConsoleFrame")->show(); + overlayRootWindow_->show(); + Ogre::OverlayManager::getSingleton().getByName( "Radar" )->show(); + flightArrowNode_->setVisible( true ); +} + +void Hud::hide(){ + hudIsVisible_ = false; + CEGUI::WindowManager::getSingleton().getWindow( (CEGUI::utf8*)"UnDocked/MainWindow/ConsoleFrame")->hide(); + overlayRootWindow_->hide(); + Ogre::OverlayManager::getSingleton().getByName( "Radar" )->hide(); + flightArrowNode_->setVisible( false ); +} + +bool Hud::projectionPos_( Ogre::Camera * cam, const Ogre::Vector3 & pos, Ogre::Vector3 & screenSpacePos ){ + Ogre::Vector3 eyeSpacePos = cam->getViewMatrix( true ) * pos; + + // z < 0 means in front of cam + if ( eyeSpacePos.z < 0 ) { + // calculate projected pos + screenSpacePos = cam->getProjectionMatrix() * eyeSpacePos; + return true; + } else { + screenSpacePos.x = (-eyeSpacePos.x > 0) ? -1 : 1; + screenSpacePos.y = (-eyeSpacePos.y > 0) ? -1 : 1; + return false; + } +} + +bool Hud::projectionPosAndSize_( Ogre::Camera * cam, const Ogre::Vector3 & pos, const Ogre::Real rad, + Ogre::Real & x, Ogre::Real & y, Ogre::Real & cx, Ogre::Real & cy ){ + + Ogre::Vector3 eyeSpacePos = cam->getViewMatrix( true ) * pos; + // z < 0 means in front of cam + if ( eyeSpacePos.z < 0 ) { + // calculate projected pos + Ogre::Vector3 screenSpacePos = cam->getProjectionMatrix() * eyeSpacePos; + x = screenSpacePos.x; + y = screenSpacePos.y; + // calculate projected size + Ogre::Vector3 spheresize( rad, rad, eyeSpacePos.z ); + spheresize = cam->getProjectionMatrix() * spheresize; + cx = spheresize.x; + cy = spheresize.y; + return true; + } else { + cx = 0; + cy = 0; + x = (-eyeSpacePos.x > 0) ? -1 : 1; + y = (-eyeSpacePos.y > 0) ? -1 : 1; + return false; + } +} + +} // namespace OpenGate Added: trunk/src/Hud.h =================================================================== --- trunk/src/Hud.h (rev 0) +++ trunk/src/Hud.h 2009-01-17 17:06:03 UTC (rev 941) @@ -0,0 +1,127 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef _OPENGATE_HUD__H +#define _OPENGATE_HUD__H + +#include "Opengate.h" + +namespace OpenGate{ + +/*! +* \brief This defines the inspace Head-Up-Display (hud) + * + * This defines the inspace Head-Up-Display (hud) + * \author Carsten <spo...@us...> + */ +class Hud { +public: + Hud( CEGUI::Window * overlayRoot, SectorAvatarObject * avatar ); + + ~Hud(); + + void init( ); + + void update( Ogre::Real elapsedTime ); + + void show(); + + void hide(); + +protected: + + bool projectionPos_( Ogre::Camera * cam, const Ogre::Vector3 & pos, Ogre::Vector3 & screenPos ); + bool projectionPosAndSize_( Ogre::Camera * cam, const Ogre::Vector3 & pos, const Ogre::Real rad, + Ogre::Real & x, Ogre::Real & y, Ogre::Real & cx, Ogre::Real & cy ); + + CEGUI::Window * overlayRootWindow_; + SectorAvatarObject * avatar_; + ResourceManager * resources_; + Ogre::SceneManager * sceneMgr_; + + Ogre::Camera * mainCamera_; + Sector * sector_; + SectorObject * target_; + + Ogre::SceneNode * flightArrowNode_; + + CEGUI::Window * targetCursor_; + Ogre::Real targetCursorHalfWidth_; + Ogre::Real targetCursorHalfHeight_; + + CEGUI::Window * pilotFlightCursor_; + Ogre::Real pilotFlightCursorHalfWidth_; + Ogre::Real pilotFlightCursorHalfHeight_; + + CEGUI::Window * targetFlightCursor_; + Ogre::Real targetFlightCursorHalfWidth_; + Ogre::Real targetFlightCursorHalfHeight_; + + CEGUI::Window * velocityProgress_; + CEGUI::Window * velocityProgressImg_; + Ogre::Real velocityProgressHeight_; + + CEGUI::Window * thrustProgress_; + CEGUI::Window * thrustProgressImg_; + Ogre::Real thrustProgressHeight_; + + CEGUI::Window * fuelProgress_; + CEGUI::Window * fuelProgressImg_; + Ogre::Real fuelProgressHeight_; + + CEGUI::Window * capacitorProgress_; + CEGUI::Window * capacitorProgressImg_; + Ogre::Real capacitorProgressHeight_; + + CEGUI::Window * armorProgress_; + CEGUI::Window * armorProgressLeftImg_; + CEGUI::Window * armorProgressRightImg_; + Ogre::Real armorProgressHeight_; + + CEGUI::Window * shieldProgress_; + CEGUI::Window * shieldProgressLeftImg_; + CEGUI::Window * shieldProgressRightImg_; + Ogre::Real shieldProgressHeight_; + + CEGUI::Window * velocityText_; + CEGUI::Window * conText_; + CEGUI::Window * armorText_; + CEGUI::Window * shieldText_; + + CEGUI::Window * targetDistanceText_; + CEGUI::Window * targetVelocity_; + CEGUI::Window * targetShieldText_; + CEGUI::Window * targetArmorText_; + + std::string overlayName_; + + bool hudIsVisible_; + + Ogre::Overlay * hudOverlay_; + Ogre::OverlayElement * mousePointer_; + + int windowsWidth_; + int windowsHeight_; + int windowsHalfWidth_; + int windowsHalfHeight_; +}; + +}; + +#endif // _OPENGATE_HUD__H Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/Makefile.am 2009-01-17 17:06:03 UTC (rev 941) @@ -47,6 +47,8 @@ GameStateManager.cpp \ GunObject.h\ GunObject.cpp\ + Hud.h\ + Hud.cpp\ InputManager.h \ InputManager.cpp \ InitState.h \ @@ -76,6 +78,8 @@ ResourceManager.cpp \ Sector.h \ Sector.cpp \ + SectorAvatarObject.h \ + SectorAvatarObject.cpp \ SectorBaseObject.h \ SectorBaseObject.cpp \ SectorCollisionObject.h \ @@ -84,6 +88,8 @@ SectorMeshObject.cpp \ SectorMovableObject.h \ SectorMovableObject.cpp \ + SectorVesselObject.h \ + SectorVesselObject.cpp \ SectorObject.h \ SectorObject.cpp \ SectorObjectAvatar.h \ Modified: trunk/src/OpcodeWrapper.cpp =================================================================== --- trunk/src/OpcodeWrapper.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/OpcodeWrapper.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -111,8 +111,8 @@ if ( !collObj ){ OgreOpcode::EntityCollisionShape * collShape = collisionManager_->createEntityCollisionShape( obj->name() + "/CollShape" ); - if ( obj->pEntity() ){ - collShape->load( obj->pEntity() ); + if ( obj->entity() ){ + collShape->load( obj->entity() ); } else { std::cout << "OpcodeCollisionDetection::createObject( BaseObject * obj ), no entity defined for obj: " << obj->name(); } Modified: trunk/src/Opengate.h =================================================================== --- trunk/src/Opengate.h 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/Opengate.h 2009-01-17 17:06:03 UTC (rev 941) @@ -29,11 +29,18 @@ class CollisionManager; class CollisionObject; } - +namespace CEGUI{ + class Window; +} + namespace OpenGate{ #define SECTORBASEOBJECT_RTTI 1 -#define SECTORMOVABLEOBJECT_RTTI 2 +#define SECTORCOLLISIONOBJECT_RTTI 3 +#define SECTORMESHOBJECT_RTTI 4 +#define SECTORMOVABLEOBJECT_RTTI 5 +#define SECTORVESSELOBJECT_RTTI 6 +#define SECTORAVATAROBJECT_RTTI 7 #define SECTOROBJECTENVIRONMENT_RTTI 1000010 #define PROJECTILE_RTTI 100001 @@ -46,11 +53,14 @@ #define STATIONPAD_RTTI 100008 #define STATION_RTTI 100009 + +class AiObject; class Avatar; class BaseObject; class DockedState; class Gun; +class Hud; class LogManager; @@ -62,9 +72,12 @@ class ResourceManager; class Sector; +class SectorAvatarObject; class SectorBaseObject; class SectorCollisionObject; class SectorMeshObject; +class SectorMovableObject; +class SectorVesselObject; class SectorObject; class SectorObjectAvatar; Modified: trunk/src/Projectile.cpp =================================================================== --- trunk/src/Projectile.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/Projectile.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -192,7 +192,7 @@ } } ammoHit_ = true; - sector_->sendVesselAmmoHit( *this, object ); + // sector_->sendVesselAmmoHit( *this, object ); } bool Projectile::update( Ogre::Real elapsedTime ){ Modified: trunk/src/Sector.cpp =================================================================== --- trunk/src/Sector.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/Sector.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -19,8 +19,162 @@ ***************************************************************************/ #include "Sector.h" + +#ifdef NEWSECTOR + #include "commonWithOgre.h" +#include "Avatar.h" +#include "LogManager.h" +#include "OpcodeWrapper.h" +#include "ResourceManager.h" +#include "SectorAvatarObject.h" +#include "SectorCollisionObject.h" +#include "SectorMeshObject.h" + + +#include <OgreEntity.h> +#include <OgreSceneManager.h> +#include <OgreSubEntity.h> + +namespace OpenGate{ + +Sector::Sector( Ogre::SceneManager * sceneMgr, NetworkClient * network ) +: sceneMgr_( sceneMgr ), network_( network ) { + + log_ = LogManager::getSingletonPtr(); + name_ = "unknown"; + avatar_ = NULL; +} + +Sector::~Sector( ){ + for_each( sectorObjects_.begin(), sectorObjects_.end(), deletePtr() ); + + for ( std::map< std::string, std::deque< SectorCollisionObject * > >::iterator it = objectHeap_.begin(), itmax = objectHeap_.end(); it != itmax; it ++ ){ + for_each( (*it).second.begin(), (*it).second.end(), deletePtr() ); + } +} + +bool Sector::update( Ogre::Real elapsedTime ){ + if ( ResourceManager::getSingleton().collisionManager ){ + ResourceManager::getSingleton().collisionManager->update( elapsedTime ); + } + + if ( avatar_ ) avatar_->update( elapsedTime ); + return true; +} + +void Sector::populate( const std::string & fileName ){ + TiXmlDocument doc( ResourceManager::getSingleton().findFullFileName( fileName ) ); + bool loadOkay = doc.LoadFile(); + + if ( !loadOkay ) { + log_->fatal( std::string( "Failed to load sector file: " + fileName ) ); + return; + } + + TiXmlHandle docHandle( &doc ); + TiXmlElement *pElem;//, *pSubElem; + TiXmlHandle hRoot( 0 ); + + pElem = docHandle.FirstChildElement().Element(); + hRoot = TiXmlHandle( pElem ); + + if ( !pElem ) { + log_->fatal( fileName + " cannot read first node." ); + return; + } + + if ( strcmp( "sector", pElem->Value() ) != 0 ) { + log_->fatal( fileName + " is no sector description" ); + return; + } + readXMLAttribute< std::string >( pElem, "name_en name", this, &OpenGate::Sector::setName, false ); + + pElem = hRoot.ChildElement( "environment", 0 ).Element(); + if ( pElem ){ + readXMLAttribute< std::string >( pElem, "skybox", this, &OpenGate::Sector::setSkyBox, false ); + readXMLColourElement( pElem, "ambient", sceneMgr_, &Ogre::SceneManager::setAmbientLight, false ); + } + + pElem = hRoot.ChildElement( "station", 0 ).Element(); + if ( pElem ){ +// std::string name; readXMLAttribute < std::string >( pElem, "name", name ); +// Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); +// Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); +// SectorObject *obj = createStation( name, pos ); +// if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + } + + pElem = hRoot.ChildElement( "beacon", 0 ).Element(); + if ( pElem ){ + Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); + Ogre::Vector3 dir( readXMLVec3Element( pElem, "direction" ) ); + Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); +// SectorObject * obj = createBeacon( pos ); +// obj->mainNode()->setDirection( dir ); +// if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + } + + for ( pElem = hRoot.FirstChild( "sectorobject" ).Element(); pElem != 0; pElem = pElem->NextSiblingElement("sectorobject") ) { + std::string name; readXMLAttribute < std::string >( pElem, "name", name ); + Ogre::Vector3 pos( readXMLVec3Element( pElem, "position" ) ); + Ogre::Vector3 scale( readXMLVec3Element( pElem, "scale" ) ); + Ogre::Quaternion rot( readXMLQuatElement( pElem, "orientation" ) ); + + TiXmlElement * pElemChild = pElem->FirstChildElement( "entity" ); + + if ( pElemChild ){ + std::string mesh; readXMLAttribute < std::string >( pElemChild, "meshFile", mesh ); + SectorMeshObject * obj = createMeshObject( name, mesh ); + if ( pos != Ogre::Vector3::ZERO ) obj->mainNode()->setPosition( pos ); + // if ( scale != Ogre::Vector3::ZERO ) obj->scale( scale ); + if ( rot != Ogre::Quaternion::ZERO ) obj->rotNode()->setOrientation( rot ); + int nSubEnt = 0; readXMLAttribute < int >( pElemChild, "numSubEntities", nSubEnt ); + + for ( int i = 0; i < nSubEnt; i ++ ){ + std::string matName; readXMLAttribute < std::string >( pElemChild, "material-"+toStr( i ), matName ); + obj->entity()->getSubEntity( i )->setMaterialName( matName ); + } + + } else{ + std::cerr << "no entity found for sectorobject: " << name << std::endl; + } + } + + return; +} + +void Sector::setSkyBox( const std::string & name ){ + sceneMgr_->setSkyBox( true, name, 10000 ); +} + +SectorMeshObject * Sector::createMeshObject( const std::string & name, const std::string & meshname ){ + SectorMeshObject * obj = new SectorMeshObject( name, this ); + obj->setMesh( meshname ); + sectorObjects_.insert( obj ); + return obj; +} + +void Sector::createAvatarObject( Avatar & avatar ){ + log_->info( std::string( "Sector::createAvatarObject: " ) + avatar.name() ); + avatar_ = new SectorAvatarObject( avatar.name(), this, avatar.vessel() ); + + sectorObjects_.insert( avatar_ ); + avatar_->reset(); + log_->info( std::string( "launch avatar from free position " ) ); + avatar_->mainNode()->setPosition( 0.0, 0.0, 0.0 ); + avatar_->mainNode()->setDirection( Ogre::Vector3( 0.0, 0.0, -1.0 ) ); + avatar_->setVelocity( Ogre::Vector3( 0.0, 0.0, 0.0 ) ); + + avatar_->mainNode()->setVisible( false ); +} + +#else + +#include "Sector.h" +#include "commonWithOgre.h" + #include "AiObject.h" #include "Avatar.h" #include "EntityManager.h" @@ -56,7 +210,7 @@ namespace OpenGate{ -// class StarField : public Ogre::SimpleRenderable { + // class StarField : public Ogre::SimpleRenderable { // public: // StarField(){ // setMaterial("BaseWhiteNoLighting"); @@ -941,6 +1095,6 @@ } } } +#endif - } // namespace OpenGate Modified: trunk/src/Sector.h =================================================================== --- trunk/src/Sector.h 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/Sector.h 2009-01-17 17:06:03 UTC (rev 941) @@ -25,19 +25,76 @@ namespace OpenGate{ +#define NEWSECTOR + +#ifdef NEWSECTOR //! Sector manages all inspace stuff related to the undocked gamestate -/*! Sector manages all inspace stuff related to the undocked gamestate. I.e. ships, environment, etc. -*/ +/*! Sector manages all inspace stuff related to the undocked gamestate. I.e. ships, environment, etc.*/ class Sector { public: /*! Constructor */ Sector( Ogre::SceneManager * sceneMgr, NetworkClient * network = NULL ); + + /*! Destructor */ + ~Sector(); + + /*! Return a ptr to the associated Ogre::SceneManager */ + inline Ogre::SceneManager * sceneManager() { return sceneMgr_; } + + /*! Main update function, that will be called every frame from listener. These call update all associated objects. */ + bool update( Ogre::Real elapsedTime ); + + /*! Set the name of this sector */ + inline void setName( const std::string & name ) { name_ = name; } + + /*! Return the name of this sector. Set during population from xml-file */ + inline const std::string & name() const { return name_; } + + /*! Populate the sector with information from a xml-file, see data/misc/test.sector for an example */ + void populate( const std::string & fileName ); + + /*! Define the skybox of the sector */ + void setSkyBox( const std::string & name ); + + /*! Create a player related avatar */ + void createAvatarObject( Avatar & avatar ); + /*! Create a mesh within the sector, without any specialization */ + SectorMeshObject * createMeshObject( const std::string & name, const std::string & meshname ); + + /*! Return handle to the avatarObject */ + inline SectorAvatarObject * avatarObject() { return avatar_; } + +protected: + Ogre::SceneManager * sceneMgr_; + NetworkClient * network_; + LogManager * log_; + + UnDockedState * listener_; + + std::string name_; + + SectorAvatarObject * avatar_; + + /*! Hold all stuff you can collide with in sector */ + std::set< SectorCollisionObject * > sectorObjects_; + /*! Hold all stuff that makes the sector looking nice */ + //std::set< SectorEnvironmentObject * > sectorEnvironment_; + + std::map< std::string, std::deque< SectorCollisionObject * > > objectHeap_; +}; + +#else +class Sector { +public: + /*! Constructor */ + Sector( Ogre::SceneManager * sceneMgr, NetworkClient * network = NULL ); + /*! Destructor */ ~Sector( ); /*! Return a ptr to the associated Ogre::SceneManager */ - inline Ogre::SceneManager * pSceneManager() { return sceneMgr_; } + inline Ogre::SceneManager * sceneManager() { return sceneMgr_; } inline void setListener( UnDockedState * listener ){ listener_ = listener; } @@ -169,6 +226,7 @@ uint childIDCounter_; }; +#endif } // namespace OpenGate Added: trunk/src/SectorAvatarObject.cpp =================================================================== --- trunk/src/SectorAvatarObject.cpp (rev 0) +++ trunk/src/SectorAvatarObject.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -0,0 +1,82 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "Opengate.h" + +#include "SectorAvatarObject.h" + +#include "LogManager.h" +#include "Moveable.h" +#include "OpcodeWrapper.h" +#include "ResourceManager.h" +#include "Vessel.h" + +#include <OgreSceneNode.h> + +namespace OpenGate{ + +SectorAvatarObject::SectorAvatarObject( const std::string & name, Sector * sector, Vessel * vessel ) + : SectorVesselObject( name, sector, vessel ){ + + reset(); +} + +SectorAvatarObject::~SectorAvatarObject( ){ +} + +void SectorAvatarObject::reset( ){ + SectorVesselObject::reset(); + thrustChange_ = 0.0; +} + +void SectorAvatarObject::collide( SectorCollisionObject * object ){ + std::cout << "SectorAvatarObject: " << this->name() << " collide with " + << object->rtti() << " " << object->name() << std::endl; +} + +bool SectorAvatarObject::update( Ogre::Real elapsedTime ){ + + //** just for key autorepeat + thrustRate_ += ( thrustChange_ * 0.8 * elapsedTime ); + thrustRate_ = max( thrustRate_, 0.0 ); + thrustRate_ = min( 1.0, thrustRate_ ); + + return SectorVesselObject::update( elapsedTime ); +} + +void SectorAvatarObject::decrementThrust( bool pressed ){ + if ( pressed ){ + thrustChange_ = -1.0; + } else { + thrustChange_ = 0.0; + } +} + +void SectorAvatarObject::incrementThrust( bool pressed ){ + if ( pressed ){ + thrustChange_ = 1.0; + } else { + thrustChange_ = 0.0; + } +} + +} //namespace OpenGate + + Added: trunk/src/SectorAvatarObject.h =================================================================== --- trunk/src/SectorAvatarObject.h (rev 0) +++ trunk/src/SectorAvatarObject.h 2009-01-17 17:06:03 UTC (rev 941) @@ -0,0 +1,73 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORAVATAROBJECT__H +#define _OPENGATE_SECTORAVATAROBJECT__H + +#include "Opengate.h" +#include "SectorVesselObject.h" + +namespace OpenGate{ + +/*! Baseclass for SectorObjects that can move, SectorMovableObject are mainly used for remote objects.*/ +class SectorAvatarObject : public SectorVesselObject { +public: + /*! Construct SectorObjectBase, Movable is a property template for the moveable object*/ + SectorAvatarObject( const std::string & name, Sector * sector, Vessel * vessel ); + + /*! Default destructor */ + virtual ~SectorAvatarObject( ); + + /*! Abstract method for runtime identification */ + virtual int rtti( ) const { return SECTORAVATAROBJECT_RTTI; } + + virtual bool update( Ogre::Real elapsedTime ); + + /*! Decide what happen if this object collide with another. */ + virtual void collide( SectorCollisionObject * object ); + + /*! Reset all values for this object. */ + virtual void reset( ); + + /*! Decrement thrust while key pressed, for auto key repeat simulation */ + void decrementThrust( bool pressed ); + + /*! Increment thrust while key pressed, for auto key repeat simulation */ + void incrementThrust( bool pressed ); + + /*! Returns the relative speed */ + inline Ogre::Real speedRate() const { if ( maxSpeed_ > 0 ) return ( speed_ / maxSpeed_ ); else return 0.0; } +// /*! Returns the current relative armor. */ +// inline Ogre::Real armorRate() const { if ( maxArmor() > 0 ) return (float)armor_ / maxArmor(); else return 0.0; } +// /*! Returns the relative shield. */ +// inline Ogre::Real shieldRate() const { if ( maxShield() > 0 ) return (float)shield_ / maxShield(); else return 0.0; } + + +protected: + + Ogre::Real thrustChange_; +}; + + +} //namespace OpenGate + +#endif //_OPENGATE_SECTORAVATAROBJECT__H + + Modified: trunk/src/SectorBaseObject.cpp =================================================================== --- trunk/src/SectorBaseObject.cpp 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/SectorBaseObject.cpp 2009-01-17 17:06:03 UTC (rev 941) @@ -32,7 +32,7 @@ : name_( name ), sector_( sector ), destroyRequest_ ( false ){ Ogre::SceneNode * par = parentNode; - if ( !par ) par = sector_->pSceneManager()->getRootSceneNode(); + if ( !par ) par = sector_->sceneManager()->getRootSceneNode(); try { mainNode_ = par->createChildSceneNode( name_ ); Modified: trunk/src/SectorBaseObject.h =================================================================== --- trunk/src/SectorBaseObject.h 2009-01-17 15:59:12 UTC (rev 940) +++ trunk/src/SectorBaseObject.h 2009-01-17 17:06:03 UTC (rev 941) @@ -43,17 +43,17 @@ //** Start GETer/SETer /*! Return the name of the object */ - inline std::string name() const { return name_; } + inline const std::string & name() const { return name_; } /*! Return a ptr to the corresponding sector */ - inline Sector * pSector() { return sector_; } + ... [truncated message content] |
From: <Ult...@us...> - 2009-01-17 15:59:17
|
Revision: 940 http://opengate.svn.sourceforge.net/opengate/?rev=940&view=rev Author: Ultrasick Date: 2009-01-17 15:59:12 +0000 (Sat, 17 Jan 2009) Log Message: ----------- changing "location" to "being_started_by" + changing faction_id of fight songs from -1 to 0 Modified Paths: -------------- trunk/data/sounds/sectors/fight/beat_under_control_-_this_is_beat_under_control.xml trunk/data/sounds/sectors/neutral/belief_systems_-_electro_kinetic.xml trunk/data/sounds/sectors/quantar/saros_-_consolation.xml trunk/data/sounds/sectors/tauseti/simon_mahler_-_hipdahop.xml trunk/data/sounds/stations/quantar/sarin_sunday_-_lonely_hike.xml Modified: trunk/data/sounds/sectors/fight/beat_under_control_-_this_is_beat_under_control.xml =================================================================== (Binary files differ) Modified: trunk/data/sounds/sectors/neutral/belief_systems_-_electro_kinetic.xml =================================================================== (Binary files differ) Modified: trunk/data/sounds/sectors/quantar/saros_-_consolation.xml =================================================================== (Binary files differ) Modified: trunk/data/sounds/sectors/tauseti/simon_mahler_-_hipdahop.xml =================================================================== (Binary files differ) Modified: trunk/data/sounds/stations/quantar/sarin_sunday_-_lonely_hike.xml =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-17 12:22:15
|
Revision: 936 http://opengate.svn.sourceforge.net/opengate/?rev=936&view=rev Author: Ultrasick Date: 2009-01-17 12:02:28 +0000 (Sat, 17 Jan 2009) Log Message: ----------- added armor and shield values Modified Paths: -------------- trunk/data/ships/squadrok/squid_1/squid_1.xml trunk/data/ships/squadrok/squid_2/squid_2.xml trunk/data/ships/squadrok/squid_3/squid_3.xml Modified: trunk/data/ships/squadrok/squid_1/squid_1.xml =================================================================== --- trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-14 04:57:25 UTC (rev 935) +++ trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-17 12:02:28 UTC (rev 936) @@ -9,7 +9,9 @@ <bounty>1800</bounty> <experience>300</experience> <velocity>250</velocity> + <armor>220</armor> <classification_de>biologische Sonde</classification_de> <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> + <maximum_deflection>4500</maximum_deflection> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_2/squid_2.xml =================================================================== --- trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-14 04:57:25 UTC (rev 935) +++ trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-17 12:02:28 UTC (rev 936) @@ -9,7 +9,9 @@ <velocity>287</velocity> <bounty>2500</bounty> <experience>320</experience> + <armor>220</armor> <classification_de>biologische Sonde</classification_de> <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> + <maximum_deflection>4500</maximum_deflection> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_3/squid_3.xml =================================================================== --- trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-14 04:57:25 UTC (rev 935) +++ trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-17 12:02:28 UTC (rev 936) @@ -12,4 +12,6 @@ <classification_de>biologische Sonde</classification_de> <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> + <armor>220</armor> + <maximum_deflection>5000</maximum_deflection> </container> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-17 12:22:11
|
Revision: 937 http://opengate.svn.sourceforge.net/opengate/?rev=937&view=rev Author: Ultrasick Date: 2009-01-17 12:10:24 +0000 (Sat, 17 Jan 2009) Log Message: ----------- added damage values (caused by the gun) Modified Paths: -------------- trunk/data/ships/squadrok/squid_1/squid_1.xml trunk/data/ships/squadrok/squid_2/squid_2.xml trunk/data/ships/squadrok/squid_3/squid_3.xml Modified: trunk/data/ships/squadrok/squid_1/squid_1.xml =================================================================== --- trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-17 12:02:28 UTC (rev 936) +++ trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-17 12:10:24 UTC (rev 937) @@ -14,4 +14,5 @@ <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <maximum_deflection>4500</maximum_deflection> + <damage>180</damage> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_2/squid_2.xml =================================================================== --- trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-17 12:02:28 UTC (rev 936) +++ trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-17 12:10:24 UTC (rev 937) @@ -14,4 +14,5 @@ <classification_en>biological probe</classification_en> <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <maximum_deflection>4500</maximum_deflection> + <damage>240</damage> </container> \ No newline at end of file Modified: trunk/data/ships/squadrok/squid_3/squid_3.xml =================================================================== --- trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-17 12:02:28 UTC (rev 936) +++ trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-17 12:10:24 UTC (rev 937) @@ -14,4 +14,5 @@ <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> <armor>220</armor> <maximum_deflection>5000</maximum_deflection> + <damage>300</damage> </container> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-17 12:21:48
|
Revision: 939 http://opengate.svn.sourceforge.net/opengate/?rev=939&view=rev Author: Ultrasick Date: 2009-01-17 12:21:42 +0000 (Sat, 17 Jan 2009) Log Message: ----------- uploading some more information. don't know if we need it later. but if we do, we got it somewhere Added Paths: ----------- doc/info.ini doc/prices.txt Added: doc/info.ini =================================================================== --- doc/info.ini (rev 0) +++ doc/info.ini 2009-01-17 12:21:42 UTC (rev 939) @@ -0,0 +1,6840 @@ +(About Data) +[Version 7.02] +7.02 - 19 August 2005. All I need +is the air that I breath... Patch +v1.0103 changes: Abattis and +laser production requirements. +[Credits] +This set of data was written and +researched by Tim -timski- +Howgego, 2001-2005, unless +otherwise stated. It uses data +extracted from Netdevil's JOSSH +database. Artifact data +originally taken from Lothar's +list. Equipment requirements +based on Nohbody's list, slightly +modified. Ship speeds from +Zeshin. EU Buildings list +includes information from FFK, +Pt_Pete and Nellie, US building +list from Duster, Grinder, +KiaDevil and CaptainCow. Roid +data from Phallon, GrimGriz, +Muffy and MyRotacol. Medal data +includes calculations by +HiTekHick. Conflux data by New +Dawn. Jumpgate copyright +1999-2005 Netdevil LTD. JumpGate +is published by Netdevil. +[Accuracy] +Since the author no longer even +has a copy of JumpGate installed, +data accuracy will be variable, +neither will this file be checked +for errors via JGROT Pro. Data +should be correct based on JOSSH. +Where information is not listed +on JOSSH, historic data has been +used - mostly dating from January +2005 or earlier. In particular, +price and building data will be +inaccurate. If you use this data +and want to help maintain it, +please email me - tim at +capsu.org . +[Update] +Corrections and updates to this +data are welcome, although +updates will be infrequent. You +can either email me to tim at +capsu.org . The most recent +version of this data can be found +at www.capsu.org/jumpgate/ . +[Station Codes] +Commonly used codes are listed +below. Buildings are formatted +"Type-Place", so "CP-SC" is a +Custom Producer in Solrain Core +sector: +Aman = Amananth +Com = Common Asteroids +Cori = Quantar Corridor +Corn = Solrain Cornea +CP = Custom Producer +EE = Evenings End +Flux = Conflux - stolen +GBS = GBS +GP = Octavius Great Pillars +Hyp = Hyperial +Ice = Ice Asteroids +KH = Klatsches Hold +LL = Lothars Landing +NA = Nano Assembler +Noob = Newbies +OC = Octavius Core +OD = Octavius SDS +OP = Octavius Outpost +Prec = Precious Asteroids +Pure = Pure Asteroids +QC = Quantar Core +QD = Quantar SDS +Rad = Radioactive Asteroids +SC = Solrain Core +Scoop = FuelScoop +SD = Solrain SDS +Semi = Semifluxor Asteroids +SF = Science Factory +TP = Quantar TriPoint +Wake = Solrain Wake +Wreckage = Wreckage +[Help with Items] +Prices are minimum-maximum +possible price ranges. Prices +shown do not use dynamic data. +"Produced:" shows where the item +is made. +"Requires: Produced:" shows first +the things required to make the +item, and second the places those +things are made. +Stations indicated with an +asterisk "*" produce the item as +a raw material - no components +are required for production at +this station. +CP/SF transfer is the amount +transferred when using Custom +Producers or Science Factories. +Ore yield is the percentage of +this commodity that makes up the +ore shown. +[Help with SpaceCraft] +Speed/AB/FF shows the maximum +cruise speed/speed with +afterburner/speed with +afterburner and FlashFire. Speeds +assume the best non-artifact +loadout. This is normally - but +not always in the case of +shuttles because certain common +equipment loadouts take account +of the likely rank of the pilot - +the "Common Equipment" loadout. +Values for things like capacitor +and ECM refer to the maximum size +of the item. +Values for engines are shown as +size x number needed, unless the +number needed is 1, in which case +only size is shown. +Values for guns show the size of +each gun mount, for example +"2|3|3" indicates 1 size 2 slot, +and 2 size 3 slots. +Values for missiles are similar +to guns, showing the maximum size +of each missile slot. +"Common Equipment" is based on +common loadout recommendations. +It is intended as a guide only +and now rather out of date. +[Help with Stations] +Stations contains only +traditional stations, not POS. +The list shows what items may be +produced, if the required +materials are available - except +in the case of raw materials and +SpaceCraft, which have no +requirements. +[Help with Buildings] +Custom Producers and Science +Factories show the items required +to make the product - 1 of each +item per product made. CP/SF +transfer is the amount +transferred when using Custom +Producers or Science Factories. +Nano Assemblers show the price of +the item. +(Commodities) +[Aluminum] +Code: Al. Mass: 2702kg. +Price: 2940c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 16% +[Ammunition] +Code: Ammo. Mass: 8000kg. +Price: 12350c. +Produced: GP OC. +Requires: Produced: +- Aluminum: Com* Pure*. +- Copper: Com* Prec* Pure*. +- Explosives: GP OP. +- Uranium: Pure* Rad*. +- Zinc: Com* Pure*. +CP/SF Transfer: 40642c. +[Antimony] +Code: Sb. Mass: 6684kg. +Price: 44300c. +Produced: Pure* Semi*. +No or unknown requirements. +Semifluxor ore yield: 3% +[Armor] +Code: Armor. Mass: 8200kg. +Price: 22930c. +Produced: OC OP. +Requires: Produced: +- Chromium: Com* Pure*. +- Composites: Cori Corn Wake. +- Synthetics: Cori OC. +- Vanadium: Prec* Pure*. +CP/SF Transfer: 64193c. +[Barium] +Code: Ba. Mass: 3510kg. +Price: 11740c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 4% +[Boron] +Code: B. Mass: 2340kg. +Price: 14290c. +Produced: Ice* Pure*. +No or unknown requirements. +Ice ore yield: 7% +[Carbon] +Code: C. Mass: 2620kg. +Price: 2440c. +Produced: Ice* Pure* Semi*. +No or unknown requirements. +Ice ore yield: 9% +Semifluxor ore yield: 24% +[Cesium] +Code: Cs. Mass: 1873kg. +Price: 47640c. +Produced: NA-Aman* Pure* Rad*. +No or unknown requirements. +Radioactive ore yield: 4% +[Chemicals] +Code: CH. Mass: 650kg. +Price: 14290c. +Produced: Cori Corn GP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Lithium: Ice* Pure*. +- Nitrogen: Ice*. +- Phosphorous: Pure* Scoop* Semi*. +- Water: Ice* Scoop*. +- Zinc: Com* Pure*. +CP/SF Transfer: 27135c. +[Chromium] +Code: Cr. Mass: 7190kg. +Price: 9400c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 5% +[Cobalt] +Code: Co. Mass: 8900kg. +Price: 9530c. +Produced: Pure* Rad*. +No or unknown requirements. +Radioactive ore yield: 28% +[Common Metals] +Code: O-1. Mass: 8000kg. +Price: 3821c. +Produced: Com*. +No or unknown requirements. +[Composites] +Code: Com. Mass: 1800kg. +Price: 18760c. +Produced: Cori Corn Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Carbon: Ice* Pure* Semi*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Molybdenum: Com* Pure*. +- Titanium: Com* Pure*. +CP/SF Transfer: 11572c. +[Conflux Biomass] +Code: CFX. Mass: 100kg. +Price: 52800c. +Produced: CP-Dark Flux*. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Ice: Ice*. +CP/SF Transfer: -35429c. +[Construction Materials] +Code: CM. Mass: 650kg. +Price: 12800c. +Produced: OC QC SC. +Requires: Produced: +- Aluminum: Com* Pure*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Machined Parts: GP OC QC SC. +- Synthetics: Cori OC. +- Titanium: Com* Pure*. +CP/SF Transfer: 48930c. +[Copper] +Code: Cu. Mass: 8960kg. +Price: 2220c. +Produced: Com* Prec* Pure*. +No or unknown requirements. +Common ore yield: 10% +Precious ore yield: 20% +[CPUs] +Code: CPU. Mass: 650kg. +Price: 44550c. +Produced: Aman. +Requires: Produced: +- Germanium: Pure* Semi*. +- Indium: Pure* Semi*. +- RAM: Aman. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +- Silver: Prec* Pure*. +CP/SF Transfer: 35672c. +[Electronics] +Code: EL. Mass: 650kg. +Price: 26750c. +Produced: Aman SC. +Requires: Produced: +- Aluminum: Com* Pure*. +- Copper: Com* Prec* Pure*. +- Gold: Prec* Pure*. +- Palladium: Prec* Pure*. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +- Synthetics: Cori OC. +CP/SF Transfer: 79252c. +[Erbium] +Code: Er. Mass: 8795kg. +Price: 26580c. +Produced: Pure* Semi*. +No or unknown requirements. +Semifluxor ore yield: 5% +[Explosives] +Code: Exp. Mass: 4200kg. +Price: 30670c. +Produced: GP OP. +Requires: Produced: +- Barium: Com* Pure*. +- Chemicals: Cori Corn GP. +- Magnesium: Ice* Pure* Scoop*. +- Nitrogen: Ice*. +CP/SF Transfer: 32716c. +[Fiber Optics] +Code: FO. Mass: 670kg. +Price: 25320c. +Produced: Aman NA-TP* TP Wake. +Requires: Produced: +- Silicon: Com* Prec* Pure* Rad* +Semi*. +- Synthetics: Cori OC. +CP/SF Transfer: 8614c. +[Fuel Cells] +Code: FU. Mass: 650kg. +Price: 57320c. +Produced: Cori TP. +Requires: Produced: +- Cobalt: Pure* Rad*. +- Gallium: Com* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Phosphorous: Pure* Scoop* Semi*. +- Rubber: Cori TP. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 43764c. +[Gallium] +Code: Ga. Mass: 5907kg. +Price: 5870c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 8% +[Germanium] +Code: Ge. Mass: 5323kg. +Price: 10220c. +Produced: Pure* Semi*. +No or unknown requirements. +Semifluxor ore yield: 13% +[Gold] +Code: Au. Mass: 19320kg. +Price: 30610c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 9% +[Grain] +Code: GRN. Mass: 930kg. +Price: 2500c. +Produced: OP* QC* SC* TP* Wake*. +No or unknown requirements. +[Gravitational Components] +Code: GravC. Mass: 3600kg. +Price: 59800c. +Produced: Cori NA-Corn* QC. +Requires: Produced: +- Cesium: NA-Aman* Pure* Rad*. +- Gallium: Com* Pure*. +- Indium: Pure* Semi*. +- Machined Parts: GP OC QC SC. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 34850c. +[Helium] +Code: He. Mass: 892kg. +Price: 13610c. +Produced: Rad* Scoop*. +No or unknown requirements. +Radioactive ore yield: 14% +[Ice] +Code: O-3. Mass: 4500kg. +Price: 5721c. +Produced: Ice*. +No or unknown requirements. +[Indium] +Code: In. Mass: 7310kg. +Price: 22150c. +Produced: Pure* Semi*. +No or unknown requirements. +Semifluxor ore yield: 6% +[Iridium] +Code: Ir. Mass: 22500kg. +Price: 14130c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 13% +[Iron] +Code: Fe. Mass: 7860kg. +Price: 980c. +Produced: Com* Prec* Pure* Rad* +Semi*. +No or unknown requirements. +Common ore yield: 25% +Precious ore yield: 15% +Semifluxor ore yield: 15% +Radioactive ore yield: 20% +[Laser Components] +Code: LC. Mass: 1300kg. +Price: 37360c. +Produced: CP-Wake NA-OC* QC TP. +Requires: Produced: +- Gallium: Com* Pure*. +- Helium: Rad* Scoop*. +- Machined Parts: GP OC QC SC. +- Nitrogen: Ice*. +- Xenon: Ice* Scoop*. +CP/SF Transfer: 26472c. +[Lithium] +Code: Li. Mass: 530kg. +Price: 12500c. +Produced: Ice* Pure*. +No or unknown requirements. +Ice ore yield: 8% +[Lumber] +Code: L. Mass: 90kg. +Price: 3500c. +Produced: OC* OP*. +No or unknown requirements. +[Machined Parts] +Code: MP. Mass: 3800kg. +Price: 20660c. +Produced: GP OC QC SC. +Requires: Produced: +- Chromium: Com* Pure*. +- Copper: Com* Prec* Pure*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Vanadium: Prec* Pure*. +- Zinc: Com* Pure*. +CP/SF Transfer: 23007c. +[Magnesium] +Code: Mg. Mass: 1738kg. +Price: 33330c. +Produced: Ice* Pure* Scoop*. +No or unknown requirements. +Ice ore yield: 3% +[Magnetics] +Code: Mag. Mass: 1780kg. +Price: 20360c. +Produced: Cori Corn. +Requires: Produced: +- Cobalt: Pure* Rad*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Machined Parts: GP OC QC SC. +CP/SF Transfer: 9792c. +[Manufactured Foods] +Code: MF. Mass: 450kg. +Price: 3750c. +Produced: OC OP QC SC TP Wake. +Requires: Produced: +- Grain: OP* QC* SC* TP* Wake*. +- Organic Foods: OC* QC* SC*. +- Water: Ice* Scoop*. +CP/SF Transfer: 4562c. +[Medical Supplies] +Code: MED. Mass: 650kg. +Price: 19350c. +Produced: OC QC SC. +Requires: Produced: +- Antimony: Pure* Semi*. +- Chemicals: Cori Corn GP. +- Germanium: Pure* Semi*. +- Iridium: Prec* Pure*. +- Radium: Pure* Rad*. +- Textiles: Hyp*. +CP/SF Transfer: 89442c. +[Molybdenum] +Code: Mo. Mass: 10220kg. +Price: 6710c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 7% +[Nitrogen] +Code: N. Mass: 1250kg. +Price: 5560c. +Produced: Ice*. +No or unknown requirements. +Ice ore yield: 18% +[Octavia Light] +Code: OBR. Mass: 1200kg. +Price: 2990c. +Produced: CP-OP. +Requires: Produced: +- Grain: OP* QC* SC* TP* Wake*. +- Water: Ice* Scoop*. +CP/SF Transfer: 360c. +[Optics] +Code: Op. Mass: 1700kg. +Price: 17690c. +Produced: GP TP. +Requires: Produced: +- Erbium: Pure* Semi*. +- Machined Parts: GP OC QC SC. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 29985c. +[Organic Foods] +Code: OF. Mass: 450kg. +Price: 5000c. +Produced: OC* QC* SC*. +No or unknown requirements. +[Palladium] +Code: Pd. Mass: 12020kg. +Price: 36370c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 5% +[PC-DSS1] +Mass: 50kg. +Price: 40000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS1 Perfect] +Mass: 50kg. +Price: 200000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS1 Poor] +Mass: 50kg. +Price: 20000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS1 Rare] +Mass: 50kg. +Price: 100000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS2] +Mass: 85kg. +Price: 45000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS2 Perfect] +Mass: 85kg. +Price: 210000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS2 Poor] +Mass: 85kg. +Price: 25000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS2 Rare] +Mass: 85kg. +Price: 105000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS3] +Mass: 100kg. +Price: 50000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS3 Perfect] +Mass: 100kg. +Price: 220000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS3 Poor] +Mass: 100kg. +Price: 30000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS3 Rare] +Mass: 100kg. +Price: 110000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS4] +Mass: 120kg. +Price: 55000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS4 Perfect] +Mass: 120kg. +Price: 240000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS4 Poor] +Mass: 120kg. +Price: 35000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-DSS4 Rare] +Mass: 120kg. +Price: 120000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC1] +Mass: 150kg. +Price: 21000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC10] +Mass: 280kg. +Price: 91700c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC11] +Mass: 410kg. +Price: 88200c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC12] +Mass: 540kg. +Price: 94050c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC13] +Mass: 150kg. +Price: 147000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC14] +Mass: 280kg. +Price: 121000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC15] +Mass: 410kg. +Price: 135000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC16] +Mass: 540kg. +Price: 189000c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC2] +Mass: 280kg. +Price: 23500c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC3] +Mass: 410kg. +Price: 22650c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC4] +Mass: 540kg. +Price: 24800c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC5] +Mass: 150kg. +Price: 46200c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC6] +Mass: 280kg. +Price: 51300c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC7] +Mass: 410kg. +Price: 48700c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC8] +Mass: 540kg. +Price: 53910c. +Produced: Wreckage*. +No or unknown requirements. +[PC-UC9] +Mass: 150kg. +Price: 85100c. +Produced: Wreckage*. +No or unknown requirements. +[Phosphorous] +Code: P. Mass: 1820kg. +Price: 14770c. +Produced: Pure* Scoop* Semi*. +No or unknown requirements. +Semifluxor ore yield: 9% +[Platinum] +Code: Pt. Mass: 21450kg. +Price: 45910c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 4% +[Plutonium] +Code: Pu. Mass: 19840kg. +Price: 42120c. +Produced: Rad* SF-OC. +Requires: Produced: +- Synthetics: Cori OC. +- Uranium: Pure* Rad*. +CP/SF Transfer: 1564c. +Radioactive ore yield: 2% +[Power Converters] +Code: PC. Mass: 2400kg. +Price: 40680c. +Produced: Aman Cori Corn. +Requires: Produced: +- Copper: Com* Prec* Pure*. +- Electronics: Aman SC. +- Machined Parts: GP OC QC SC. +- Rubber: Cori TP. +CP/SF Transfer: 46046c. +[Precious Metals] +Code: O-5. Mass: 8000kg. +Price: 12642c. +Produced: Prec*. +No or unknown requirements. +[Prosthetics] +Code: SyO. Mass: 650kg. +Price: 48500c. +Produced: Hyp. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Medical Supplies: OC QC SC. +- Water: Ice* Scoop*. +CP/SF Transfer: -28135c. +[Proximity Fuses] +Code: PF. Mass: 1800kg. +Price: 48400c. +Produced: SF-Corn. +Requires: Produced: +- Machined Parts: GP OC QC SC. +- RF Transceivers: Cori GP Wake. +CP/SF Transfer: 26000c. +[Quanus Ice] +Code: QBR. Mass: 1200kg. +Price: 3560c. +Produced: Unknown. +Requires: Produced: +- Grain: OP* QC* SC* TP* Wake*. +- Water: Ice* Scoop*. +CP/SF Transfer: -238c. +[Radioactive Metals] +Code: O-2. Mass: 8000kg. +Price: 11461c. +Produced: Rad*. +No or unknown requirements. +[Radium] +Code: Ra. Mass: 5000kg. +Price: 23820c. +Produced: Pure* Rad*. +No or unknown requirements. +Radioactive ore yield: 8% +[RAM] +Code: RAM. Mass: 650kg. +Price: 37960c. +Produced: Aman. +Requires: Produced: +- Copper: Com* Prec* Pure*. +- Germanium: Pure* Semi*. +- Gold: Prec* Pure*. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 4512c. +[RF Transceivers] +Code: RFT. Mass: 710kg. +Price: 56160c. +Produced: Cori GP Wake. +Requires: Produced: +- Electronics: Aman SC. +- Germanium: Pure* Semi*. +- Magnetics: Cori Corn. +- Palladium: Prec* Pure*. +- Silver: Prec* Pure*. +CP/SF Transfer: 45532c. +[Rubber] +Code: RU. Mass: 850kg. +Price: 39130c. +Produced: Cori TP. +Requires: Produced: +- Antimony: Pure* Semi*. +- Barium: Com* Pure*. +- Chemicals: Cori Corn GP. +- Synthetics: Cori OC. +CP/SF Transfer: 63123c. +[Semifluxors] +Code: O-4. Mass: 8000kg. +Price: 7708c. +Produced: Semi*. +No or unknown requirements. +[Silicon] +Code: Si. Mass: 2329kg. +Price: 1320c. +Produced: Com* Prec* Pure* Rad* +Semi*. +No or unknown requirements. +Common ore yield: 5% +Precious ore yield: 10% +Semifluxor ore yield: 25% +Radioactive ore yield: 10% +[Silver] +Code: Ag. Mass: 10500kg. +Price: 10800c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 17% +[Solrain Stout] +Code: SBR. Mass: 1200kg. +Price: 3330c. +Produced: Unknown. +Requires: Produced: +- Grain: OP* QC* SC* TP* Wake*. +- Water: Ice* Scoop*. +CP/SF Transfer: 3c. +[Synthetics] +Code: Sy. Mass: 5400kg. +Price: 33880c. +Produced: Cori OC. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Chemicals: Cori Corn GP. +- Magnesium: Ice* Pure* Scoop*. +- Nitrogen: Ice*. +- Silicon: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 21366c. +[Textiles] +Code: TX. Mass: 650kg. +Price: 3000c. +Produced: Hyp*. +No or unknown requirements. +[Titanium] +Code: Ti. Mass: 4540kg. +Price: 3910c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 12% +[Trap] +Code: UXB. Mass: 2500kg. +Price: 22960c. +Produced: OP QC SC Wake. +Requires: Produced: +- Electronics: Aman SC. +- Explosives: GP OP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 34292c. +[Uranium] +Code: U. Mass: 18950kg. +Price: 11910c. +Produced: Pure* Rad*. +No or unknown requirements. +Radioactive ore yield: 16% +[Vanadium] +Code: V. Mass: 5800kg. +Price: 26230c. +Produced: Prec* Pure*. +No or unknown requirements. +Precious ore yield: 7% +[Water] +Code: H2O. Mass: 1000kg. +Price: 1000c. +Produced: Ice* Scoop*. +No or unknown requirements. +Ice ore yield: 50% +[X-0013-S] +Transport container +Mass: 1000kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-1901-L] +Transport container +Mass: 1150kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-3555-L] +Transport container +Mass: 1200kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-4533-L] +Transport container +Mass: 1300kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-7770-L] +Transport container +Mass: 950kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-8821-L] +Transport container +Mass: 1200kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[X-9450-C] +Transport container +Mass: 50kg. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[Xenon] +Code: Xe. Mass: 5897kg. +Price: 20000c. +Produced: Ice* Scoop*. +No or unknown requirements. +Ice ore yield: 5% +[Zinc] +Code: Zn. Mass: 7130kg. +Price: 5870c. +Produced: Com* Pure*. +No or unknown requirements. +Common ore yield: 8% +(Guns) +[Banker] +Pol Rating: 40. Rank: 15. +Size: 2. Mass: 1200kg. +Damage: 2K. Speed: 0.045. +Energy: 450K. Dissipation: 1. +Price: 62440c. +Manufacturer: Venurian. +Produced: Cori QC TP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +CP/SF Transfer: -4422c. +[Barrak] +Pol Rating: 48. Rank: 17. +Size: 2. Mass: 1000kg. +Damage: 450K. Speed: 2600. +Life: 1.7. Delay: 0.4. +Energy: 525K. Dissipation: 1. +Ammo: 680. +Price: 685990c. +Manufacturer: Dorator. +Produced: Hyp OP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Cobalt: Pure* Rad*. +- Electronics: Aman SC. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Magnetics: Cori Corn. +- Molybdenum: Com* Pure*. +CP/SF Transfer: -653519c. +[Bender] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 100kg. +Damage: 192K. Speed: 10000. +Life: 0.1. Delay: 0.6. +Energy: 288K. Dissipation: 1. +Price: 7810c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 67509c. +[Broker] +Pol Rating: 0. Rank: 2. +Size: 2. Mass: 1000kg. +Damage: 1K. Speed: 0.025. +Energy: 250K. Dissipation: 1. +Price: 12480c. +Manufacturer: Venurian. +Produced: Cori QC TP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +CP/SF Transfer: 48036c. +[Calefactor] +Pol Rating: 4. Rank: 6. +Size: 1. Mass: 200kg. +Damage: 462K. Speed: 10000. +Life: 0.14. Delay: 0.9. +Energy: 845K. Dissipation: 1. +Price: 28450c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 45837c. +[Cobra] +Pol Rating: 16. Rank: 9. +Size: 2. Mass: 640kg. +Damage: 250K. Speed: 1750. +Life: 1.2. Delay: 0.25. +Energy: 62K. Dissipation: 1. +Ammo: 1250. +Price: 42480c. +Manufacturer: Dorator. +Produced: GP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Machined Parts: GP OC QC SC. +CP/SF Transfer: -21004c. +[Cracker] +Pol Rating: 0. Rank: 0. +Size: 2. Mass: 600kg. +Damage: 0K. Speed: 0.02. +Energy: 250K. Dissipation: 1. +Price: 0c. +Manufacturer: Venurian. +Produced: Noob*. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +- Nitrogen: Ice*. +CP/SF Transfer: 66700c. +[Dealer] +Pol Rating: 4. Rank: 6. +Size: 1. Mass: 200kg. +Damage: 351K. Speed: 10000. +Life: 0.14. Delay: 0.7. +Energy: 616K. Dissipation: 1. +Price: 26860c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 47507c. +[Deceptor] +Pol Rating: 20. Rank: 10. +Size: 1. Mass: 140kg. +Damage: 305K. Speed: 10000. +Life: 0.18. Delay: 0.7. +Energy: 532K. Dissipation: 1. +Price: 28630c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Fiber Optics: Aman NA-TP* TP +Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +- Titanium: Com* Pure*. +CP/SF Transfer: 54218c. +[Distorter] +Pol Rating: 20. Rank: 10. +Size: 1. Mass: 140kg. +Damage: 170K. Speed: 10000. +Life: 0.18. Delay: 0.4. +Energy: 287K. Dissipation: 1. +Price: 27230c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: 55198c. +[Duster] +Pol Rating: 0. Rank: 2. +Size: 1. Mass: 1712kg. +Damage: 1K. Speed: 0.0115. +Energy: 328K. Dissipation: 1. +Price: 10450c. +Manufacturer: OPL. +Produced: GP OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnesium: Ice* Pure* Scoop*. +- Magnetics: Cori Corn. +CP/SF Transfer: 83017c. +[Excavator] +Pol Rating: 0. Rank: 2. +Size: 1. Mass: 1478kg. +Damage: 1K. Speed: 0.0125. +Energy: 256K. Dissipation: 1. +Price: 11210c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +- Titanium: Com* Pure*. +- Vanadium: Prec* Pure*. +CP/SF Transfer: 76089c. +[FeatherFire] +Pol Rating: 72. Rank: 23. +Size: 3. Mass: 900kg. +Damage: 810K. Speed: 6000. +Life: 0.4. Delay: 0.9. +Energy: 1170K. Dissipation: 1. +Price: 229060c. +Manufacturer: Annihilitech. +Produced: GP OC OP. +Requires: Produced: +- Cobalt: Pure* Rad*. +- Copper: Com* Prec* Pure*. +- Electronics: Aman SC. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +- Xenon: Ice* Scoop*. +CP/SF Transfer: -126963c. +[Financier] +Pol Rating: 80. Rank: 25. +Size: 3. Mass: 1500kg. +Damage: 2K. Speed: 0.06. +Energy: 485K. Dissipation: 0. +Price: 109000c. +Manufacturer: Venurian. +Produced: QC. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Gravitational Components: Cori +NA-Corn* QC. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +- Platinum: Prec* Pure*. +CP/SF Transfer: 52400c. +[Financier Mk.II] +Pol Rating: 100. Rank: 30. +Size: 6. Mass: 1900kg. +Damage: 5K. Speed: 0.35. +Energy: 675K. Dissipation: 1. +Price: 172120c. +Manufacturer: Venurian. +Produced: Cori. +Requires: Produced: +- Gravitational Components: Cori +NA-Corn* QC. +- Iridium: Prec* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +- Platinum: Prec* Pure*. +CP/SF Transfer: -3166c. +[Flail] +Pol Rating: 104. Rank: 31. +Size: 4. Mass: 3450kg. +Damage: 780K. Speed: 2600. +Life: 1.8. Delay: 0.4. +Energy: 840K. Dissipation: 1. +Ammo: 580. +Price: 1564500c. +Manufacturer: Dorator. +Produced: GP. +Requires: Produced: +- Chromium: Com* Pure*. +- Cobalt: Pure* Rad*. +- Electronics: Aman SC. +- Magnetics: Cori Corn. +- Titanium: Com* Pure*. +- Vanadium: Prec* Pure*. +CP/SF Transfer: -1546545c. +[Hammer] +Pol Rating: 28. Rank: 12. +Size: 2. Mass: 670kg. +Damage: 360K. Speed: 1520. +Life: 1.6. Delay: 0.3. +Energy: 71K. Dissipation: 1. +Ammo: 1200. +Price: 48080c. +Manufacturer: Dorator. +Produced: Corn SC Wake. +Requires: Produced: +- Machined Parts: GP OC QC SC. +- Titanium: Com* Pure*. +CP/SF Transfer: -25914c. +[Hitman] +Pol Rating: 76. Rank: 24. +Size: 3. Mass: 1500kg. +Damage: 1360K. Speed: 2600. +Life: 1.9. Delay: 0.8. +Energy: 2040K. Dissipation: 1. +Ammo: 320. +Price: 1012460c. +Manufacturer: Aristio. +Produced: TP. +Requires: Produced: +- Electronics: Aman SC. +- Magnetics: Cori Corn. +- Titanium: Com* Pure*. +- Vanadium: Prec* Pure*. +CP/SF Transfer: -985833c. +[Illuminator] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 100kg. +Damage: 324K. Speed: 10000. +Life: 0.1. Delay: 0.9. +Energy: 551K. Dissipation: 1. +Price: 9010c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 66249c. +[Injustice] +Pol Rating: 24. Rank: 11. +Size: 2. Mass: 500kg. +Damage: 782K. Speed: 10000. +Life: 0.18. Delay: 0.85. +Energy: 1564K. Dissipation: 1. +Price: 140300c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Composites: Cori Corn Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: -73505c. +[InSight] +Targeting Beam +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 1340kg. +Damage: 0K. Speed: 220. +Energy: 25K. Dissipation: 1. +Price: 16370c. +Manufacturer: PSI. +Produced: CP-Hyp Hyp. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Electronics: Aman SC. +- Optics: GP TP. +- RF Transceivers: Cori GP Wake. +CP/SF Transfer: 97701c. +[Landlord] +Pol Rating: 76. Rank: 24. +Size: 3. Mass: 785kg. +Damage: 420K. Speed: 1520. +Life: 1.4. Delay: 0.3. +Energy: 95K. Dissipation: 1. +Ammo: 1150. +Price: 58190c. +Manufacturer: T&P. +Produced: Corn Wake. +Requires: Produced: +- Chromium: Com* Pure*. +- Machined Parts: GP OC QC SC. +- Titanium: Com* Pure*. +CP/SF Transfer: -27129c. +[Lastlight] +Pol Rating: 20. Rank: 10. +Size: 1. Mass: 140kg. +Damage: 404K. Speed: 10000. +Life: 0.18. Delay: 0.9. +Energy: 734K. Dissipation: 1. +Price: 29500c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: 52335c. +[Liar] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 100kg. +Damage: 251K. Speed: 10000. +Life: 0.1. Delay: 0.75. +Energy: 402K. Dissipation: 1. +Price: 8190c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 67110c. +[LightFire] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 100kg. +Damage: 240K. Speed: 10000. +Life: 0.1. Delay: 0.75. +Energy: 411K. Dissipation: 1. +Price: 0c. +Manufacturer: OPL. +Produced: Noob*. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Nitrogen: Ice*. +- Optics: GP TP. +CP/SF Transfer: 60610c. +[Needle] +Pol Rating: 4. Rank: 6. +Size: 1. Mass: 200kg. +Damage: 296K. Speed: 10000. +Life: 0.14. Delay: 0.6. +Energy: 485K. Dissipation: 1. +Price: 24720c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: 49754c. +[Nova Mk.I] +Pol Rating: 115. Rank: 40. +Size: 3. Mass: 1300kg. +Damage: 2800K. Speed: 730. +Life: 3.5. Delay: 0.5. +Energy: 3200K. Dissipation: 0.9. +Price: 2493050c. +Manufacturer: PSI. +Produced: Hyp. +Requires: Produced: +- Copper: Com* Prec* Pure*. +- Gold: Prec* Pure*. +- Gravitational Components: Cori +NA-Corn* QC. +- Lithium: Ice* Pure*. +- Optics: GP TP. +- Phosphorous: Pure* Scoop* Semi*. +- Radium: Pure* Rad*. +- Uranium: Pure* Rad*. +CP/SF Transfer: -2444382c. +[Peeler] +Pol Rating: 92. Rank: 28. +Size: 3. Mass: 1940kg. +Damage: 1295K. Speed: 2200. +Life: 2.3. Delay: 1.5. +Energy: 257K. Dissipation: 1. +Ammo: 150. +Price: 165500c. +Manufacturer: T&P. +Produced: Corn SC. +Requires: Produced: +- Composites: Cori Corn Wake. +- Machined Parts: GP OC QC SC. +- Titanium: Com* Pure*. +CP/SF Transfer: -130445c. +[Prospector] +Pol Rating: 100. Rank: 30. +Size: 5. Mass: 1750kg. +Damage: 3K. Speed: 0.187. +Energy: 500K. Dissipation: 1. +Price: 152350c. +Manufacturer: Venurian. +Produced: Cori QC TP. +Requires: Produced: +- Gravitational Components: Cori +NA-Corn* QC. +- Iridium: Prec* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Magnetics: Cori Corn. +- Platinum: Prec* Pure*. +CP/SF Transfer: 17592c. +[Rasp] +Pol Rating: 84. Rank: 26. +Size: 3. Mass: 2150kg. +Damage: 1150K. Speed: 2000. +Life: 3.4. Delay: 1.25. +Energy: 261K. Dissipation: 1. +Ammo: 140. +Price: 146990c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Composites: Cori Corn Wake. +- Machined Parts: GP OC QC SC. +CP/SF Transfer: -111979c. +[RB-1] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 1500kg. +Damage: -80K. Speed: 350. +Energy: 30K. Dissipation: 1. +Price: 40000c. +Produced: CP-SC. +Requires: Produced: +- Magnetics: Cori Corn. +- PC-UC4: Wreckage*. +- Power Converters: Aman Cori Corn +CP/SF Transfer: 43840c. +[RB-2] +Pol Rating: 0. Rank: 0. +Size: 2. Mass: 1700kg. +Damage: -140K. Speed: 400. +Energy: 32K. Dissipation: 1. +Price: 70000c. +Produced: CP-SC. +Requires: Produced: +- Magnetics: Cori Corn. +- PC-UC8: Wreckage*. +- Power Converters: Aman Cori Corn +CP/SF Transfer: 41450c. +[RB-3] +Pol Rating: 0. Rank: 0. +Size: 3. Mass: 1900kg. +Damage: -200K. Speed: 500. +Energy: 34K. Dissipation: 1. +Price: 110000c. +Produced: CP-SC. +Requires: Produced: +- Magnetics: Cori Corn. +- PC-UC9: Wreckage*. +- Power Converters: Aman Cori Corn +CP/SF Transfer: 30640c. +[RB-4] +Pol Rating: 0. Rank: 0. +Size: 3. Mass: 2100kg. +Damage: -240K. Speed: 700. +Energy: 36K. Dissipation: 1. +Price: 160000c. +Produced: CP-QC CP-Wake. +Requires: Produced: +- Magnetics: Cori Corn. +- PC-UC12: Wreckage*. +- Power Converters: Aman Cori Corn +CP/SF Transfer: -12910c. +[S-W-28] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 100kg. +Damage: 235K. Speed: 10000. +Life: 0.1. Delay: 0.75. +Energy: 399K. Dissipation: 1. +Price: 0c. +Manufacturer: T&P. +Produced: Noob*. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Nitrogen: Ice*. +- Optics: GP TP. +CP/SF Transfer: 60610c. +[Senator] +Pol Rating: 60. Rank: 20. +Size: 2. Mass: 1850kg. +Damage: 1010K. Speed: 2000. +Life: 3.8. Delay: 1.25. +Energy: 124K. Dissipation: 1. +Ammo: 160. +Price: 133880c. +Manufacturer: Annihilitech. +Produced: Hyp. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Machined Parts: GP OC QC SC. +- Molybdenum: Com* Pure*. +CP/SF Transfer: -109784c. +[Serializer] +Pol Rating: 104. Rank: 31. +Size: 2. Mass: 900kg. +Damage: 1700K. Speed: 730. +Life: 3. Delay: 0.5. +Energy: 2159K. Dissipation: 0.9. +Price: 975920c. +Manufacturer: PSI. +Produced: Hyp. +Requires: Produced: +- Copper: Com* Prec* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Lithium: Ice* Pure*. +- Phosphorous: Pure* Scoop* Semi*. +- Radium: Pure* Rad*. +- Uranium: Pure* Rad*. +- Xenon: Ice* Scoop*. +CP/SF Transfer: -902136c. +[Shard] +Pol Rating: 104. Rank: 31. +Size: 4. Mass: 750kg. +Damage: 400K. Speed: 10000. +Life: 0.2. Delay: 0.4. +Energy: 650K. Dissipation: 1. +Price: 347750c. +Manufacturer: Cromforge. +Produced: QC. +Requires: Produced: +- Chromium: Com* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: -280027c. +[Shark] +Pol Rating: 24. Rank: 11. +Size: 2. Mass: 350kg. +Damage: 590K. Speed: 10000. +Life: 0.18. Delay: 0.75. +Energy: 902K. Dissipation: 1. +Price: 107490c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Composites: Cori Corn Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: -39054c. +[Spitfire] +Pol Rating: 40. Rank: 15. +Size: 2. Mass: 650kg. +Damage: 730K. Speed: 6000. +Life: 0.4. Delay: 0.9. +Energy: 1148K. Dissipation: 1. +Price: 185430c. +Manufacturer: Aristio. +Produced: QC TP. +Requires: Produced: +- Copper: Com* Prec* Pure*. +- Electronics: Aman SC. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Molybdenum: Com* Pure*. +- Optics: GP TP. +- Xenon: Ice* Scoop*. +CP/SF Transfer: -83971c. +[Straker] +Pol Rating: 0. Rank: 4. +Size: 1. Mass: 320kg. +Damage: 125K. Speed: 1750. +Life: 1.6. Delay: 0.2. +Energy: 45K. Dissipation: 1. +Ammo: 1600. +Price: 23000c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Machined Parts: GP OC QC SC. +CP/SF Transfer: -550c. +[Thief] +Pol Rating: 32. Rank: 13. +Size: 3. Mass: 1200kg. +Damage: 1400K. Speed: 350. +Energy: 2400K. Dissipation: 1. +Price: 281500c. +Manufacturer: Aristio. +Produced: QC. +Requires: Produced: +- Boron: Ice* Pure*. +- Electronics: Aman SC. +- Gravitational Components: Cori +NA-Corn* QC. +- Optics: GP TP. +CP/SF Transfer: -177045c. +[Thorn] +Pol Rating: 24. Rank: 11. +Size: 2. Mass: 400kg. +Damage: 636K. Speed: 10000. +Life: 0.18. Delay: 0.7. +Energy: 1148K. Dissipation: 1. +Price: 116830c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Composites: Cori Corn Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: -48861c. +[V.A.P.O.R.] +Pol Rating: 68. Rank: 22. +Size: 3. Mass: 520kg. +Damage: 372K. Speed: 10000. +Life: 0.2. Delay: 0.4. +Energy: 625K. Dissipation: 1. +Price: 216950c. +Manufacturer: Samsun. +Produced: Hyp. +Requires: Produced: +- Composites: Cori Corn Wake. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Optics: GP TP. +CP/SF Transfer: -153987c. +[Vantage] +Pol Rating: 104. Rank: 31. +Size: 4. Mass: 2410kg. +Damage: 1920K. Speed: 2200. +Life: 2. Delay: 1.5. +Energy: 498K. Dissipation: 1. +Ammo: 120. +Price: 519070c. +Manufacturer: T&P. +Produced: SC SF-Tictac. +Requires: Produced: +- Composites: Cori Corn Wake. +- Machined Parts: GP OC QC SC. +- Titanium: Com* Pure*. +- Vanadium: Prec* Pure*. +CP/SF Transfer: -475463c. +[Warper] +Pol Rating: 16. Rank: 9. +Size: 2. Mass: 335kg. +Damage: 315K. Speed: 10000. +Life: 0.16. Delay: 0.4. +Energy: 519K. Dissipation: 1. +Price: 85610c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Laser Components: CP-Wake +NA-OC* QC TP. +- Machined Parts: GP OC QC SC. +- Optics: GP TP. +CP/SF Transfer: -14180c. +(Missiles) +[Calypso] +Pol Rating: 0. Rank: 5. +Size: 1. Mass: 140kg. +Damage: 2500K. Duration: 24. +Thrust: 85K. Pitch: 1.34. +Yaw: 1.34. Guidance: 2. +Price: 6990c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 110820c. +[Cluker] +RoyofCA's secret missile +Pol Rating: 0. Rank: 0. +Size: 3. Mass: 0kg. +Damage: 0K. Duration: 0. +Thrust: 0K. Pitch: 0. +Yaw: 0. Guidance: 0. +Price: 0c. +Produced: Unknown. +No or unknown requirements. +[Cutlass] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 225kg. +Damage: 2000K. Duration: 16. +Thrust: 68K. Pitch: 1.13. +Yaw: 1.13. Guidance: 4. +Price: 22570c. +Manufacturer: Lexxor. +Produced: Corn SC Wake. +Requires: Produced: +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Proximity Fuses: SF-Corn. +- Titanium: Com* Pure*. +CP/SF Transfer: 143351c. +[Drop Tank] +Fuel Pod +Pol Rating: 16. Rank: 9. +Size: 2. Mass: 1392kg. +Damage: 1K. Duration: 3. +Thrust: 0K. Pitch: 0. +Yaw: 0. Guidance: 0. +Price: 18000c. +Manufacturer: TRI. +Produced: Unknown. +Requires: Produced: +- Aluminum: Com* Pure*. +- Composites: Cori Corn Wake. +- Helium: Rad* Scoop*. +CP/SF Transfer: 16410c. +[Glaive] +Nuke +Pol Rating: 60. Rank: 20. +Size: 5. Mass: 4100kg. +Damage: 60000K. Duration: 60. +Thrust: 41K. Pitch: 1.57. +Yaw: 1.57. Guidance: 1. +Price: 110000c. +Manufacturer: Lexxor. +Produced: CP-QC. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Conflux Biomass: CP-Dark Flux*. +- Electronics: Aman SC. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Uranium: Pure* Rad*. +CP/SF Transfer: 36700c. +[Grave Robber] +Pol Rating: 60. Rank: 20. +Size: 2. Mass: 260kg. +Damage: 5100K. Duration: 18. +Thrust: 133K. Pitch: 1.61. +Yaw: 1.61. Guidance: 2. +Price: 23760c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- CPUs: Aman. +- Carbon: Ice* Pure* Semi*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 111012c. +[Hatchet] +Pol Rating: 48. Rank: 17. +Size: 3. Mass: 590kg. +Damage: 12500K. Duration: 35. +Thrust: 236K. Pitch: 0.52. +Yaw: 0.52. Guidance: 1. +Price: 41060c. +Manufacturer: Samsun. +Produced: Hyp. +Requires: Produced: +- Carbon: Ice* Pure* Semi*. +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Molybdenum: Com* Pure*. +CP/SF Transfer: 81757c. +[HellRazor] +Pol Rating: 84. Rank: 26. +Size: 3. Mass: 210kg. +Damage: 4250K. Duration: 22. +Thrust: 137K. Pitch: 1.75. +Yaw: 1.75. Guidance: 2. +Price: 41490c. +Manufacturer: Lexxor. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- CPUs: Aman. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- RAM: Aman. +CP/SF Transfer: 129875c. +[Kataka] +Pol Rating: 52. Rank: 18. +Size: 4. Mass: 720kg. +Damage: 14750K. Duration: 28. +Thrust: 252K. Pitch: 0.42. +Yaw: 0.42. Guidance: 1. +Price: 33010c. +Manufacturer: Lexxor. +Produced: Corn SC Wake. +Requires: Produced: +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Titanium: Com* Pure*. +CP/SF Transfer: 83989c. +[Lance] +Pol Rating: 28. Rank: 12. +Size: 4. Mass: 620kg. +Damage: 17000K. Duration: 36. +Thrust: 245K. Pitch: 0.49. +Yaw: 0.49. Guidance: 1. +Price: 33240c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +CP/SF Transfer: 82778c. +[Long Sword] +Pol Rating: 28. Rank: 12. +Size: 4. Mass: 500kg. +Damage: 12000K. Duration: 40. +Thrust: 185K. Pitch: 0.45. +Yaw: 0.45. Guidance: 1. +Price: 29790c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Titanium: Com* Pure*. +CP/SF Transfer: 87370c. +[Maul] +Nuke +Pol Rating: 60. Rank: 20. +Size: 5. Mass: 4100kg. +Damage: 60000K. Duration: 60. +Thrust: 41K. Pitch: 1.57. +Yaw: 1.57. Guidance: 1. +Price: 110000c. +Manufacturer: Lexxor. +Produced: CP-OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Conflux Biomass: CP-Dark Flux*. +- Electronics: Aman SC. +- Fuel Cells: Cori TP. +- Plutonium: Rad* SF-OC. +CP/SF Transfer: 66430c. +[Morning Star] +Pol Rating: 96. Rank: 29. +Size: 6. Mass: 220kg. +Damage: 4100K. Duration: 21. +Thrust: 154K. Pitch: 1.45. +Yaw: 1.45. Guidance: 2. +Price: 96270c. +Manufacturer: Lexxor. +Produced: Hyp. +Requires: Produced: +- CPUs: Aman. +- Carbon: Ice* Pure* Semi*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Molybdenum: Com* Pure*. +- RAM: Aman. +CP/SF Transfer: 79546c. +[Purgatory] +Pol Rating: 28. Rank: 12. +Size: 2. Mass: 205kg. +Damage: 4250K. Duration: 20. +Thrust: 82K. Pitch: 1.52. +Yaw: 1.52. Guidance: 2. +Price: 19300c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- CPUs: Aman. +- Carbon: Ice* Pure* Semi*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 115695c. +[Rapier] +Pol Rating: 0. Rank: 5. +Size: 1. Mass: 150kg. +Damage: 2650K. Duration: 22. +Thrust: 90K. Pitch: 1.33. +Yaw: 1.33. Guidance: 2. +Price: 7080c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Titanium: Com* Pure*. +CP/SF Transfer: 111216c. +[Sabre] +Nuke +Pol Rating: 60. Rank: 20. +Size: 5. Mass: 4100kg. +Damage: 60000K. Duration: 60. +Thrust: 41K. Pitch: 1.57. +Yaw: 1.57. Guidance: 1. +Price: 110000c. +Manufacturer: Lexxor. +Produced: CP-Wake. +Requires: Produced: +- Conflux Biomass: CP-Dark Flux*. +- Electronics: Aman SC. +- Fuel Cells: Cori TP. +- Titanium: Com* Pure*. +- Uranium: Pure* Rad*. +CP/SF Transfer: 37190c. +[ScrewDriver] +Pol Rating: 88. Rank: 27. +Size: 2. Mass: 220kg. +Damage: 4100K. Duration: 21. +Thrust: 154K. Pitch: 1.45. +Yaw: 1.45. Guidance: 2. +Price: 27170c. +Manufacturer: Lexxor. +Produced: Hyp. +Requires: Produced: +- CPUs: Aman. +- Carbon: Ice* Pure* Semi*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Molybdenum: Com* Pure*. +- RAM: Aman. +CP/SF Transfer: 152101c. +[Sirrus] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 210kg. +Damage: 3000K. Duration: 33. +Thrust: 142K. Pitch: 1.8. +Yaw: 1.8. Guidance: 2. +Price: 24290c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- CPUs: Aman. +- Carbon: Ice* Pure* Semi*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +CP/SF Transfer: 110455c. +[Sledge] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 220kg. +Damage: 3900K. Duration: 18. +Thrust: 105K. Pitch: 1.43. +Yaw: 1.43. Guidance: 2. +Price: 19360c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- CPUs: Aman. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +CP/SF Transfer: 115152c. +[Smacker] +Pol Rating: 0. Rank: 2. +Size: 1. Mass: 190kg. +Damage: 7500K. Duration: 6. +Thrust: 150K. Pitch: 0. +Yaw: 0. Guidance: 0. +Price: 4680c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +CP/SF Transfer: 86016c. +[Spear] +Pol Rating: 0. Rank: 2. +Size: 1. Mass: 180kg. +Damage: 6000K. Duration: 8. +Thrust: 100K. Pitch: 0. +Yaw: 0. Guidance: 0. +Price: 4210c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- Titanium: Com* Pure*. +CP/SF Transfer: 87479c. +[Stiletto] +Pol Rating: 72. Rank: 23. +Size: 2. Mass: 210kg. +Damage: 4250K. Duration: 22. +Thrust: 137K. Pitch: 1.75. +Yaw: 1.75. Guidance: 2. +Price: 27230c. +Manufacturer: Lexxor. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- CPUs: Aman. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +- RAM: Aman. +CP/SF Transfer: 144848c. +[Stinger] +Pol Rating: 0. Rank: 5. +Size: 1. Mass: 165kg. +Damage: 3100K. Duration: 20. +Thrust: 98K. Pitch: 1.33. +Yaw: 1.33. Guidance: 2. +Price: 7800c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Electronics: Aman SC. +- Explosives: GP OP. +- Fuel Cells: Cori TP. +CP/SF Transfer: 109490c. +(ECM) +[Antiflux] +Pol Rating: 0. Rank: 0. +Size: 3. Mass: 250kg. +Power: 25K. +Price: 209380c. +Manufacturer: Aman. +Produced: Aman CP-Aman. +Requires: Produced: +- Conflux Biomass: CP-Dark Flux*. +- Electronics: Aman SC. +- Gravitational Components: Cori +NA-Corn* QC. +- RF Transceivers: Cori GP Wake. +CP/SF Transfer: -24339c. +[Ghost] +Pol Rating: 9. Rank: 8. +Size: 1. Mass: 30kg. +Power: 970K. +Price: 127260c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Antimony: Pure* Semi*. +- CPUs: Aman. +- Magnetics: Cori Corn. +- RAM: Aman. +CP/SF Transfer: 13547c. +[Jammer] +Pol Rating: 12. Rank: 9. +Size: 1. Mass: 1750kg. +Power: 1K. +Price: 924590c. +Manufacturer: Lexxor. +Produced: Hyp. +Requires: Produced: +- Electronics: Aman SC. +- Molybdenum: Com* Pure*. +- RF Transceivers: Cori GP Wake. +CP/SF Transfer: -881199c. +[PWD100] +Pol Rating: 39. Rank: 18. +Size: 2. Mass: 2195kg. +Power: 1250K. +Price: 311400c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Iridium: Prec* Pure*. +- Laser Components: CP-Wake +NA-OC* QC TP. +- Lithium: Ice* Pure*. +- Molybdenum: Com* Pure*. +- Power Converters: Aman Cori Corn +CP/SF Transfer: -215590c. +[Shade] +Pol Rating: 75. Rank: 30. +Size: 1. Mass: 80kg. +Power: 5000K. +Price: 950900c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Antimony: Pure* Semi*. +- CPUs: Aman. +- Magnetics: Cori Corn. +- RAM: Aman. +CP/SF Transfer: -851275c. +[Specter] +Pol Rating: 30. Rank: 15. +Size: 1. Mass: 50kg. +Power: 1860K. +Price: 316100c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Antimony: Pure* Semi*. +- CPUs: Aman. +- Magnetics: Cori Corn. +- RAM: Aman. +CP/SF Transfer: -184735c. +[Whistle] +Pol Rating: 45. Rank: 20. +Size: 1. Mass: 400kg. +Power: 20K. +Price: 1007210c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Boron: Ice* Pure*. +- Electronics: Aman SC. +- Gravitational Components: Cori +NA-Corn* QC. +- Magnetics: Cori Corn. +CP/SF Transfer: -936370c. +[Wraith] +Pol Rating: 45. Rank: 20. +Size: 1. Mass: 70kg. +Power: 3750K. +Price: 614140c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Antimony: Pure* Semi*. +- CPUs: Aman. +- Magnetics: Cori Corn. +- RAM: Aman. +CP/SF Transfer: -497677c. +(Shields) +[Alpaa] +Pol Rating: 84. Rank: 26. +Size: 3. Mass: 4100kg. +Baserate: 1750. Efficiency: 0.81. +Damage: 20400K. Recharge: 148000. +Price: 720560c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Iridium: Prec* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -658888c. +[Canopy] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 2800kg. +Baserate: 1300. Efficiency: 0.84. +Damage: 12240K. Recharge: 108000. +Price: 123980c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: -51449c. +[Cascade] +Pol Rating: 52. Rank: 18. +Size: 3. Mass: 2900kg. +Baserate: 2100. Efficiency: 0.81. +Damage: 16000K. Recharge: 128000. +Price: 364200c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: -300740c. +[Defier] +Pol Rating: 32. Rank: 13. +Size: 2. Mass: 3500kg. +Baserate: 2210. Efficiency: 0.85. +Damage: 13100K. Recharge: 124000. +Price: 268700c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: -200465c. +[Deflector] +Pol Rating: 0. Rank: 1. +Size: 1. Mass: 1200kg. +Baserate: 800. Efficiency: 0.74. +Damage: 5700K. Recharge: 52500. +Price: 11690c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: 71295c. +[Flatiron] +Pol Rating: 0. Rank: 1. +Size: 1. Mass: 1000kg. +Baserate: 500. Efficiency: 0.7. +Damage: 6000K. Recharge: 60000. +Price: 11180c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: 46511c. +[Guardian] +Pol Rating: 115. Rank: 35. +Size: 6. Mass: 20200kg. +Baserate: 8000. Efficiency: 0.6. +Damage: 99700K. Recharge: 1250000. +Price: 10000000c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Composites: Cori Corn Wake. +- Electronics: Aman SC. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Magnetics: Cori Corn. +- Molybdenum: Com* Pure*. +CP/SF Transfer: -10426440c. +[Haven] +Pol Rating: 32. Rank: 13. +Size: 2. Mass: 3400kg. +Baserate: 2350. Efficiency: 0.86. +Damage: 15400K. Recharge: 112000. +Price: 314440c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Iridium: Prec* Pure*. +- Magnetics: Cori Corn. +CP/SF Transfer: -237302c. +[Himelea] +Pol Rating: 0. Rank: 5. +Size: 2. Mass: 1700kg. +Baserate: 1130. Efficiency: 0.87. +Damage: 7800K. Recharge: 81900. +Price: 69990c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -15239c. +[Kydango] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 750kg. +Baserate: 400. Efficiency: 0.76. +Damage: 5400K. Recharge: 67500. +Price: 0c. +Manufacturer: Cromforge. +Produced: Noob*. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: 78730c. +[Makk] +Pol Rating: 44. Rank: 16. +Size: 4. Mass: 6200kg. +Baserate: 2100. Efficiency: 0.8. +Damage: 36000K. Recharge: 145500. +Price: 475810c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -416030c. +[Mortar] +Pol Rating: 100. Rank: 30. +Size: 5. Mass: 6500kg. +Baserate: 2400. Efficiency: 0.7. +Damage: 60000K. Recharge: 172500. +Price: 577470c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Iridium: Prec* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -533963c. +[Omnus] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 1200kg. +Baserate: 800. Efficiency: 0.74. +Damage: 5700K. Recharge: 45000. +Price: 0c. +Manufacturer: OPL. +Produced: Noob*. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: 83570c. +[PCS-1] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 2900kg. +Baserate: 980. Efficiency: 0.84. +Damage: 8400K. Recharge: 81000. +Price: 84000-5000000c. +Produced: Wreckage*. +No or unknown requirements. +[PCS-2] +Pol Rating: 0. Rank: 0. +Size: 2. Mass: 3740kg. +Baserate: 2000. Efficiency: 0.85. +Damage: 18300K. Recharge: 138000. +Price: 0-50000000c. +Produced: Wreckage*. +No or unknown requirements. +[PCS-3] +Pol Rating: 0. Rank: 0. +Size: 3. Mass: 3980kg. +Baserate: 2700. Efficiency: 0.95. +Damage: 25400K. Recharge: 157000. +Price: 1020800-30000000c. +Produced: Wreckage*. +No or unknown requirements. +[PCS-4] +Pol Rating: 0. Rank: 0. +Size: 4. Mass: 6340kg. +Baserate: 3000. Efficiency: 0.78. +Damage: 37500K. Recharge: 163400. +Price: 627000-20000000c. +Produced: Wreckage*. +No or unknown requirements. +[Pod] +Pol Rating: 0. Rank: 1. +Size: 1. Mass: 750kg. +Baserate: 400. Efficiency: 0.76. +Damage: 5400K. Recharge: 75000. +Price: 11560c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: 66592c. +[Protector] +Pol Rating: 0. Rank: 5. +Size: 1. Mass: 1430kg. +Baserate: 735. Efficiency: 0.72. +Damage: 5010K. Recharge: 64500. +Price: 50340c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: 30713c. +[Resistor] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 3000kg. +Baserate: 1900. Efficiency: 0.91. +Damage: 12000K. Recharge: 90000. +Price: 137160c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -60448c. +[Rocky] +Pol Rating: 12. Rank: 8. +Size: 2. Mass: 2400kg. +Baserate: 1500. Efficiency: 0.8. +Damage: 12600K. Recharge: 94500. +Price: 153180c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: -102589c. +[S-S-13] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 1000kg. +Baserate: 500. Efficiency: 0.7. +Damage: 6000K. Recharge: 52500. +Price: 0c. +Manufacturer: T&P. +Produced: Noob*. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Machined Parts: GP OC QC SC. +- Magnetics: Cori Corn. +CP/SF Transfer: 58250c. +[Shelter] +Pol Rating: 0. Rank: 5. +Size: 1. Mass: 920kg. +Baserate: 610. Efficiency: 0.73. +Damage: 6009K. Recharge: 78000. +Price: 59610c. +Manufacturer: Cromforge. +Produced: Cori TP. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Iridium: Prec* Pure*. +- Magnetics: Cori Corn. +CP/SF Transfer: 30269c. +[Shroud] +Pol Rating: 44. Rank: 16. +Size: 4. Mass: 5000kg. +Baserate: 1800. Efficiency: 0.88. +Damage: 27000K. Recharge: 132000. +Price: 444970c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Fiber Optics: Aman NA-TP* TP +Wake. +- Magnetics: Cori Corn. +CP/SF Transfer: -388488c. +[Warden] +Pol Rating: 115. Rank: 35. +Size: 5. Mass: 7500kg. +Baserate: 9150. Efficiency: 0.55. +Damage: 36500K. Recharge: 675000. +Price: 995040c. +Manufacturer: TRI. +Produced: QC SC. +Requires: Produced: +- Aluminum: Com* Pure*. +- Boron: Ice* Pure*. +- Composites: Cori Corn Wake. +- Iridium: Prec* Pure*. +- Magnetics: Cori Corn. +CP/SF Transfer: -974312c. +(Capacitors) +[Alembic] +Pol Rating: 100. Rank: 30. +Size: 4. Mass: 3600kg. +Power: 7400K. Efficiency: 95. +Price: 1496680c. +Manufacturer: Aman. +Produced: Aman. +Requires: Produced: +- Composites: Cori Corn Wake. +- Electronics: Aman SC. +- Gravitational Components: Cori +NA-Corn* QC. +- Magnetics: Cori Corn. +- Power Converters: Aman Cori Corn +CP/SF Transfer: -1405164c. +[Carrier] +Pol Rating: 32. Rank: 13. +Size: 3. Mass: 3200kg. +Power: 2600K. Efficiency: 87. +Price: 68810c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 27979c. +[Deepol] +Pol Rating: 72. Rank: 23. +Size: 3. Mass: 3900kg. +Power: 6400K. Efficiency: 87. +Price: 1207360c. +Manufacturer: Samsun. +Produced: Hyp. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Gravitational Components: Cori +NA-Corn* QC. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Magnetics: Cori Corn. +CP/SF Transfer: -1126468c. +[Germ] +Pol Rating: 8. Rank: 7. +Size: 1. Mass: 1600kg. +Power: 1630K. Efficiency: 92. +Price: 29440c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Composites: Cori Corn Wake. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 87098c. +[Jar] +Pol Rating: 0. Rank: 3. +Size: 1. Mass: 1000kg. +Power: 1430K. Efficiency: 73. +Price: 14980c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 84501c. +[Jug] +Pol Rating: 8. Rank: 7. +Size: 1. Mass: 975kg. +Power: 1800K. Efficiency: 89. +Price: 21300c. +Manufacturer: OPL. +Produced: GP OC OP. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Iron: Com* Prec* Pure* Rad* +Semi*. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 77865c. +[Keytso] +Pol Rating: 64. Rank: 21. +Size: 4. Mass: 3700kg. +Power: 5000K. Efficiency: 93. +Price: 186970c. +Manufacturer: Cromforge. +Produced: Cori QC TP. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Composites: Cori Corn Wake. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: -78308c. +[Lifeline] +Pol Rating: 20. Rank: 10. +Size: 2. Mass: 1500kg. +Power: 2000K. Efficiency: 85. +Price: 33810c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Chemicals: Cori Corn GP. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 66689c. +[Mana] +Pol Rating: 8. Rank: 7. +Size: 1. Mass: 1310kg. +Power: 1440K. Efficiency: 87. +Price: 27030c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Chemicals: Cori Corn GP. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 73808c. +[Mantra] +Pol Rating: 0. Rank: 2. +Size: 1. Mass: 1000kg. +Power: 1200K. Efficiency: 90. +Price: 9670c. +Manufacturer: T&P. +Produced: Corn SC Wake. +Requires: Produced: +- Aluminum: Com* Pure*. +- Chemicals: Cori Corn GP. +- Lithium: Ice* Pure*. +- Magnesium: Ice* Pure* Scoop*. +- Rubber: Cori TP. +CP/SF Transfer: 92036c. +[Outlet] +Pol Rating: 0. Rank: 0. +Size: 1. Mass: 2000kg. +Power: 1250K. Efficiency: 75. +Price: 0c. +Manufacturer: OPL. +Produced: Noob*. +Requires: Produced: +- Chemicals: Cori Corn GP. +- Iron: Com* Prec* Pure* Rad... [truncated message content] |
From: <Ult...@us...> - 2009-01-17 12:19:06
|
Revision: 938 http://opengate.svn.sourceforge.net/opengate/?rev=938&view=rev Author: Ultrasick Date: 2009-01-17 12:18:48 +0000 (Sat, 17 Jan 2009) Log Message: ----------- uploading some info about the squadrok ships which I haven't added to opacma jet Added Paths: ----------- doc/data/ships/ doc/data/ships/squadrok/ doc/data/ships/squadrok/info.txt Added: doc/data/ships/squadrok/info.txt =================================================================== --- doc/data/ships/squadrok/info.txt (rev 0) +++ doc/data/ships/squadrok/info.txt 2009-01-17 12:18:48 UTC (rev 938) @@ -0,0 +1,235 @@ +[Credits] + Certain Conflux data with thanks + to New Dawn - www.confluxwar.net. + No longer accurate. +[C-0 Jellyfish] + Bounty: 1600* + Experience: 1000* + Speed: 120 + Shield: 1000k + Armor: 210k + Guns: 1 + Damage: 180k + Range: 1000m + * = Rank 5 or lower. Otherwise 10. +[C-1 Squid] + Range: 1000m +[C-2 Squid] + Range: 1000m +[C-3 Squid] + Range: 1200m +[C-4 Snail] + Bounty: 1550 + Experience: 325 + Speed: 326 + Shield: 7000k + Armor: 700k + Guns: 3 + Damage: 524k + Range: 3400m +[C-5 Snail] + Bounty: 1650 + Experience: 360 + Speed: 350 + Shield: 7000k + Armor: 700k + Guns: 3 + Damage: 524k + Range: 3400m +[C-6 Manta] + Bounty: 6400 + Experience: 1000 + Speed: 450 + Shield: 7000k + Armor: 1350k + Guns: 2 + Damage: 540k + Range: 2200m +[C-7 Manta] + Bounty: 8000 + Experience: 2800 + Speed: 456 + Shield: 9000k + Armor: 1700k + Guns: 2 + Damage: 420k + Range: 4400m +[C-8 Kraken] + Bounty: 10400 + Experience: 6000 + Speed: 420 + Shield: 9000k + Armor: 1300k + Guns: 1 + Damage: 780k + Range: 3000m +[C-9 Kraken] + Bounty: 14000 + Experience: 6500 + Speed: 436 + Shield: 9000k + Armor: 1300k + Guns: 1 + Damage: 780k + Range: 3000m +[C-10 Eel] + Bounty: 24000 + Experience: 5000 + Speed: 500 + Shield: 21500k + Armor: 21500k + Guns: 2 + Damage: 2950k + Range: 4500m +[C-11 Phocaena] + Bounty: 32000 + Experience: 8000 + Speed: 463 + Shield: 10600k + Armor: 7500k + Guns: 3 + Damage: 420k + Range: 4400m +[C-12 Phocaena] + Bounty: 40000 + Experience: 9500 + Speed: 512 + Shield: 10600k + Armor: 10600k + Guns: 3 + Damage: 2950k + Range: 4500m +[C-13 Nautaloid] + Bounty: 31000 + Experience: 5000 + Speed: 433 + Shield: 8000k + Armor: 16000k + Guns: 2 + Damage: 540k + Range: 2200m +[C-14 Nautaloid] + Bounty: 33000 + Experience: 5250 + Speed: 433 + Shield: 8000k + Armor: 16000k + Guns: 2 + Damage: 420k + Range: 4400m +[C-15 Nautaloid] + Bounty: 35000 + Experience: 5500 + Speed: 433 + Shield: 8000k + Armor: 16000k + Guns: 2 + Damage: 780k + Range: 3000m +[C-16 Stingray] + Bounty: 38000 + Experience: 6000 + Speed: 678 + Shield: 12100k + Armor: 9800k + Guns: 2 + Damage: 420k + Range: 4400m +[C-17 Stingray] + Bounty: 39000 + Experience: 6250 + Speed: 692 + Shield: 12100k + Armor: 9800k + Guns: 2 + Damage: 540k + Range: 2200m +[C-18 Stingray] + Bounty: 40000 + Experience: 6500 + Speed: 707 + Shield: 12100k + Armor: 9800k + Guns: 2 + Damage: 780k + Range: 3000m +[C-19] + Bounty: 43000 + Experience: 7000 + Speed: 619 + Shield: 5000k + Armor: 1000k + Guns: 1 + Damage: 780k + Range: 3000m +[C-20] + Bounty: 44000 + Experience: 7250 + Speed: 630 + Shield: 5000k + Armor: 1000k + Guns: 1 + Damage: 780k + Range: 3000m +[C-21] + Bounty: 45000 + Experience: 7500 + Speed: 645 + Shield: 5000k + Armor: 1000k + Guns: 1 + Damage: 2950k + Range: 4500m +[C-22] + Bounty: 47000 + Experience: 8000 + Speed: 612 + Shield: 9000k + Guns: 2 + Damage: 540k + Range: 2200m +[C-23] + Bounty: 47500 + Experience: 8250 + Speed: 622 + Shield: 9000k + Guns: 2 + Damage: 780k + Range: 3000m +[C-24] + Bounty: 48000 + Experience: 8500 + Speed: 632 + Shield: 9000k + Guns: 2 + Damage: 780k + Range: 3000m +[C-25 Shark] + Experience: 10000 + Speed: 652 + Shield: 97500k + Guns: 3 + Damage: 540k + Range: 2200m +[C-26 Shark] + Experience: 10000 + Speed: 652 + Shield: 97500k + Guns: 3 + Damage: 780k + Range: 3000m +[C-27 Shark] + Experience: 10000 + Speed: 671 + Shield: 97500k + Guns: 3 + Damage: 2950k + Range: 4500m +[Infestation] + Bounty: 250000 + Experience for kill: 30000 + Bounty for missile hit: Missile + damage / 2 + Experience for missile hit: 2x + number of online pilots + Armor: variable \ No newline at end of file Property changes on: doc/data/ships/squadrok/info.txt ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-14 04:57:34
|
Revision: 935 http://opengate.svn.sourceforge.net/opengate/?rev=935&view=rev Author: Ultrasick Date: 2009-01-14 04:57:25 +0000 (Wed, 14 Jan 2009) Log Message: ----------- each squid = 1 ship Added Paths: ----------- trunk/data/ships/squadrok/squid_1/ trunk/data/ships/squadrok/squid_1/squid_1.mesh trunk/data/ships/squadrok/squid_1/squid_1.xml trunk/data/ships/squadrok/squid_2/ trunk/data/ships/squadrok/squid_2/squid_2.mesh trunk/data/ships/squadrok/squid_2/squid_2.xml trunk/data/ships/squadrok/squid_3/ trunk/data/ships/squadrok/squid_3/squid_3.mesh trunk/data/ships/squadrok/squid_3/squid_3.xml Removed Paths: ------------- trunk/data/ships/squadrok/squid/ Added: trunk/data/ships/squadrok/squid_1/squid_1.mesh =================================================================== (Binary files differ) Property changes on: trunk/data/ships/squadrok/squid_1/squid_1.mesh ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/data/ships/squadrok/squid_1/squid_1.xml =================================================================== --- trunk/data/ships/squadrok/squid_1/squid_1.xml (rev 0) +++ trunk/data/ships/squadrok/squid_1/squid_1.xml 2009-01-14 04:57:25 UTC (rev 935) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>101</object_id> + <category_id>9</category_id> + <faction_id>4</faction_id> + <name_de>Squid 1</name_de> + <name_en>Squid 1</name_en> + <bounty>1800</bounty> + <experience>300</experience> + <velocity>250</velocity> + <classification_de>biologische Sonde</classification_de> + <classification_en>biological probe</classification_en> + <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> +</container> \ No newline at end of file Property changes on: trunk/data/ships/squadrok/squid_1/squid_1.xml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/data/ships/squadrok/squid_2/squid_2.mesh =================================================================== (Binary files differ) Property changes on: trunk/data/ships/squadrok/squid_2/squid_2.mesh ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/data/ships/squadrok/squid_2/squid_2.xml =================================================================== --- trunk/data/ships/squadrok/squid_2/squid_2.xml (rev 0) +++ trunk/data/ships/squadrok/squid_2/squid_2.xml 2009-01-14 04:57:25 UTC (rev 935) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>102</object_id> + <category_id>9</category_id> + <name_de>Squid 2</name_de> + <name_en>Squid 2</name_en> + <faction_id>4</faction_id> + <velocity>287</velocity> + <bounty>2500</bounty> + <experience>320</experience> + <classification_de>biologische Sonde</classification_de> + <classification_en>biological probe</classification_en> + <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> +</container> \ No newline at end of file Property changes on: trunk/data/ships/squadrok/squid_2/squid_2.xml ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/data/ships/squadrok/squid_3/squid_3.mesh =================================================================== (Binary files differ) Property changes on: trunk/data/ships/squadrok/squid_3/squid_3.mesh ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/data/ships/squadrok/squid_3/squid_3.xml =================================================================== --- trunk/data/ships/squadrok/squid_3/squid_3.xml (rev 0) +++ trunk/data/ships/squadrok/squid_3/squid_3.xml 2009-01-14 04:57:25 UTC (rev 935) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + +<container> + <object_id>103</object_id> + <category_id>9</category_id> + <faction_id>4</faction_id> + <name_de>Squid 3</name_de> + <name_en>Squid 3</name_en> + <velocity>300</velocity> + <bounty>2750</bounty> + <experience>350</experience> + <classification_de>biologische Sonde</classification_de> + <classification_en>biological probe</classification_en> + <gun_slot_size_1>0.018243 -2.967243 0.121664</gun_slot_size_1> +</container> \ No newline at end of file Property changes on: trunk/data/ships/squadrok/squid_3/squid_3.xml ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-13 03:27:08
|
Revision: 934 http://opengate.svn.sourceforge.net/opengate/?rev=934&view=rev Author: Ultrasick Date: 2009-01-13 03:27:00 +0000 (Tue, 13 Jan 2009) Log Message: ----------- "Squid" is no longer a class. S-1, S-2 and S-3 are now each a ship in the according ship category Modified Paths: -------------- trunk/data/misc/ids.xml Modified: trunk/data/misc/ids.xml =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-13 03:24:09
|
Revision: 933 http://opengate.svn.sourceforge.net/opengate/?rev=933&view=rev Author: Ultrasick Date: 2009-01-13 03:24:03 +0000 (Tue, 13 Jan 2009) Log Message: ----------- removing unneeded info file about the lady kickstart deleting 2 attempts of the squid model. Now using: mesh of egore, material of me Modified Paths: -------------- templates/ships/squadrok/squid/squid.blend Removed Paths: ------------- templates/ships/squadrok/squid/squid_attempt2.blend templates/ships/squadrok/squid/squid_attempt3.blend templates/ships/tauseti/lady_kickstart/info.txt Modified: templates/ships/squadrok/squid/squid.blend =================================================================== (Binary files differ) Deleted: templates/ships/squadrok/squid/squid_attempt2.blend =================================================================== (Binary files differ) Deleted: templates/ships/squadrok/squid/squid_attempt3.blend =================================================================== (Binary files differ) Deleted: templates/ships/tauseti/lady_kickstart/info.txt =================================================================== --- templates/ships/tauseti/lady_kickstart/info.txt 2009-01-13 02:32:48 UTC (rev 932) +++ templates/ships/tauseti/lady_kickstart/info.txt 2009-01-13 03:24:03 UTC (rev 933) @@ -1,14 +0,0 @@ -|Comment by the owner of the texture pack: -|--------------------------------------------------------- -|Feel free to use these textures as your wish (for non-commercial use only, unless you ask me permission first...) -|You can modify it, use on your models, etc... Have fun! -| -|If you want, you can credit me (credits required on other downloadable stuff, like models or modifications of these textures) -|As Ramiel, or, better yet, as www.jagthesite.com -|--------------------------------------------------------- - -|Comment by Gary Luck (alias Ultrasick): -|--------------------------------------------------------- -|946.3414634 pixel per blender length unit -|946,3414634 Pixel pro Blender L\xE4ngeneinheit -|--------------------------------------------------------- \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-13 02:55:25
|
Revision: 931 http://opengate.svn.sourceforge.net/opengate/?rev=931&view=rev Author: Ultrasick Date: 2009-01-13 01:36:46 +0000 (Tue, 13 Jan 2009) Log Message: ----------- changed some categories like "jumpgates", "beacons" and "anomalies" to classes of the "sector objects" category Modified Paths: -------------- trunk/data/misc/ids.xml Modified: trunk/data/misc/ids.xml =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-13 02:32:57
|
Revision: 932 http://opengate.svn.sourceforge.net/opengate/?rev=932&view=rev Author: Ultrasick Date: 2009-01-13 02:32:48 +0000 (Tue, 13 Jan 2009) Log Message: ----------- why do we have 2 blender files for the ship? Deleted "lady_kickstart.blend" and renamed "lady_kickstart1.blend" to "lady_kickstart.blend". I hope I deleted the right one. Modified Paths: -------------- templates/ships/tauseti/lady_kickstart/lady_kickstart.blend Removed Paths: ------------- templates/ships/tauseti/lady_kickstart/lady_kickstart1.blend Modified: templates/ships/tauseti/lady_kickstart/lady_kickstart.blend =================================================================== (Binary files differ) Deleted: templates/ships/tauseti/lady_kickstart/lady_kickstart1.blend =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <spo...@us...> - 2009-01-11 22:50:40
|
Revision: 930 http://opengate.svn.sourceforge.net/opengate/?rev=930&view=rev Author: spom_spom Date: 2009-01-11 22:50:33 +0000 (Sun, 11 Jan 2009) Log Message: ----------- add some new classes for the new sectorobjects Modified Paths: -------------- trunk/src/AiCommands.cpp trunk/src/AiObject.cpp trunk/src/BaseObject.cpp trunk/src/BaseObject.h trunk/src/Makefile.am trunk/src/Missile.cpp trunk/src/Missile.h trunk/src/Moveable.cpp trunk/src/Moveable.h trunk/src/OpcodeWrapper.cpp trunk/src/OpcodeWrapper.h trunk/src/Opengate.h trunk/src/Sector.cpp trunk/src/Sector.h trunk/src/SectorObject.h trunk/src/SectorObjectAvatar.cpp trunk/src/SectorObjectMissile.cpp trunk/src/SectorObjectMissile.h trunk/src/SectorObjectMoveable.cpp trunk/src/SectorObjectMoveable.h trunk/src/SectorObjectVessel.cpp trunk/src/SectorObjectVessel.h trunk/src/UnDockedState.cpp trunk/src/Vessel.cpp trunk/src/Vessel.h Added Paths: ----------- trunk/src/SectorBaseObject.cpp trunk/src/SectorBaseObject.h trunk/src/SectorCollisionObject.cpp trunk/src/SectorCollisionObject.h trunk/src/SectorMeshObject.cpp trunk/src/SectorMeshObject.h trunk/src/SectorMovableObject.cpp trunk/src/SectorMovableObject.h Modified: trunk/src/AiCommands.cpp =================================================================== --- trunk/src/AiCommands.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/AiCommands.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -109,7 +109,7 @@ bool AiCommandLookAt::update( ){ if ( ai_->vesselObject() ){ - if ( runtime_ > 5.0 * 360.0 / ai_->vesselObject()->moveable()->yaw() ){ + if ( runtime_ > 5.0 * 360.0 / ai_->vesselObject()->movable()->yaw() ){ //** maybee endless loop through gimbal ???, so look at fixed direction and try again runtime_ = 0.0; addCommand( new AiCommandLookAt( ai_, Ogre::Vector3( Ogre::Math::RangeRandom( -1.0, 1.0 ), @@ -165,11 +165,11 @@ Ogre::Real rotFric = ai_->vesselObject()->rotFriction(); Ogre::Real scaledYaw = yawTo.valueDegrees() / ( elapsedTime_ * rotFric * - ai_->vesselObject()->moveable()->yaw() ); + ai_->vesselObject()->movable()->yaw() ); Ogre::Real scaledPitch = pitchTo.valueDegrees() / ( elapsedTime_ * rotFric * - ai_->vesselObject()->moveable()->pitch() ); + ai_->vesselObject()->movable()->pitch() ); Ogre::Real scaledRoll = rollTo.valueDegrees() / ( elapsedTime_ * rotFric * - ai_->vesselObject()->moveable()->roll() ); + ai_->vesselObject()->movable()->roll() ); double yaw = max( -1.0f, scaledYaw ); yaw = min( yaw, 1.0 ); double pitch = max( -1.0f, scaledPitch ); pitch = min( pitch, 1.0 ); @@ -221,7 +221,7 @@ Ogre::Quaternion rot( thisDir.getRotationTo( targetDir_ ) ); rot.normalise(); Ogre::Degree valTo( rot.getRoll() ); Ogre::Real scaledVal = valTo.valueDegrees() / - ( elapsedTime_ * ai_->vesselObject()->rotFriction() * ai_->vesselObject()->moveable()->roll() ); + ( elapsedTime_ * ai_->vesselObject()->rotFriction() * ai_->vesselObject()->movable()->roll() ); float val = max( -1.0f, scaledVal ); val = min( val, 1.0f ); if ( fabs( val ) < 0.1 ) return false; Modified: trunk/src/AiObject.cpp =================================================================== --- trunk/src/AiObject.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/AiObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -234,7 +234,7 @@ double AiObject::maxSpeed( double thrustRate ) const { //** vmax(th,d):=sqrt( th/d ) ** P - double d = vesselObject_->moveable()->dragFactor(); + double d = vesselObject_->movable()->dragFactor(); double th = vesselObject_->maxThrust() * thrustRate; return sqrt( th / d ); } Modified: trunk/src/BaseObject.cpp =================================================================== --- trunk/src/BaseObject.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/BaseObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -34,7 +34,7 @@ : name_( name ), sector_( sector ), userID_( userID ), childID_( childID ), mainNode_( NULL ), parentNode_( parentNode ), collObj_( NULL ){ globalID_ = createGlobalID( userID, childID ); - sceneMgr_ = sector_->sceneManager(); + sceneMgr_ = sector_->pSceneManager(); if ( !parentNode_ ) parentNode_ = sceneMgr_->getRootSceneNode(); try{ Modified: trunk/src/BaseObject.h =================================================================== --- trunk/src/BaseObject.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/BaseObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -23,67 +23,7 @@ #include "Opengate.h" -namespace Temporary{ - /*! Baseclass for Sectorobjects. All stuff that is shown in a sector is a SectorObject, Interaction, physics, collision, is done by SectorObjects , Each SectorObject provide a update function which is called by sector in each frame. */ - class SectorObject{ - }; - /*! Sectorobject with a mesh that provide collision. */ - class SectorCollisionObject : public SectorObject{ - }; - /*! Sectorobject that is assiciated to any parent SectorObject.*/ - class SectorChildObject : public SectorCollisionObject { - }; - /*! Sectorobject that represent space environment without collision*/ - class SectorEnvironmentObject : public SectorObject { - }; - /*! Special child SectorObject with collision*/ - class SectorPadObject : public SectorChildObject { - }; - class SectorProjectileObject : public SectorChildObject { - }; - class SectorStationPadObject : public SectorPadObject { - }; - class SectorBeaconPadObject : public SectorPadObject { - }; - /*! Sectorobject with a mesh that provide collision. */ - class SectorMeshObject : public SectorCollisionObject{ - }; - class SectorStationObject : public SectorMeshObject{ - }; - class SectorAsteroidObject : public SectorMeshObject{ - }; - class SectorBeaconObject : public SectorMeshObject{ - }; - class SectorUserObject : public SectorMeshObject { - }; - class SectorAnomalieObject : public SectorMeshObject{ - }; - - class SectorMovableObject : public SectorUserObject{ - }; - - class SectorMissileObject : public SectorMovableObject{ - }; - - class SectorVesselObject : public SectorMovableObject{ - }; - - class SectorAvatarObject : public SectorVesselObject{ - }; - - - class SectorPlanetObject : public SectorEnvironmentObject{ - }; - class SectorStarfieldObject : public SectorEnvironmentObject{ - }; - class SectorSpaceDustObject : public SectorEnvironmentObject{ - }; - class SectorSpaceDecorationObject : public SectorEnvironmentObject{ - }; - -} - - + namespace OpenGate{ class BaseObject{ Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Makefile.am 2009-01-11 22:50:33 UTC (rev 930) @@ -76,6 +76,14 @@ ResourceManager.cpp \ Sector.h \ Sector.cpp \ + SectorBaseObject.h \ + SectorBaseObject.cpp \ + SectorCollisionObject.h \ + SectorCollisionObject.cpp \ + SectorMeshObject.h \ + SectorMeshObject.cpp \ + SectorMovableObject.h \ + SectorMovableObject.cpp \ SectorObject.h \ SectorObject.cpp \ SectorObjectAvatar.h \ Modified: trunk/src/Missile.cpp =================================================================== --- trunk/src/Missile.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Missile.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -23,7 +23,7 @@ namespace OpenGate{ -Missile::Missile( ) : Moveable() { +Missile::Missile( ) : Movable() { rtti_ = MISSILE; dragFactor_ = 1; thrust_ = 1; @@ -31,7 +31,7 @@ } void Missile::readPropertiesFromXML( TiXmlHandle & hRoot ){ - Moveable::readPropertiesFromXML( hRoot ); + Movable::readPropertiesFromXML( hRoot ); readXMLNode< int >( hRoot, "damage", this, &OpenGate::Missile::setDamage, false ); readXMLNode< int >( hRoot, "thrust", this, &OpenGate::Missile::setThrust, false ); Modified: trunk/src/Missile.h =================================================================== --- trunk/src/Missile.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Missile.h 2009-01-11 22:50:33 UTC (rev 930) @@ -28,7 +28,7 @@ namespace OpenGate{ -class Missile: public Moveable{ +class Missile: public Movable{ public: Missile(); virtual ~Missile(){} Modified: trunk/src/Moveable.cpp =================================================================== --- trunk/src/Moveable.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Moveable.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -24,7 +24,7 @@ namespace OpenGate{ -Moveable::Moveable() : MeshEntity(){ +Movable::Movable() : MeshEntity(){ yaw_ = 1.0; pitch_ = 1.0; roll_ = 1.0; @@ -32,14 +32,14 @@ dragFactor_ = 1.0; } -void Moveable::readPropertiesFromXML( TiXmlHandle & hRoot ){ +void Movable::readPropertiesFromXML( TiXmlHandle & hRoot ){ MeshEntity::readPropertiesFromXML( hRoot ); - readXMLNode< float >( hRoot, "yaw", this, &OpenGate::Moveable::setYaw, false ); - readXMLNode< float >( hRoot, "pitch", this, &OpenGate::Moveable::setPitch, false ); - readXMLNode< float >( hRoot, "roll", this, &OpenGate::Moveable::setRoll, false ); - readXMLNode< Uint32 >( hRoot, "armor", this, &OpenGate::Moveable::setArmor, false ); - readXMLNode< float >( hRoot, "dragfactor drag_factor", this, &OpenGate::Moveable::setDragFactor, false ); + readXMLNode< float >( hRoot, "yaw", this, &OpenGate::Movable::setYaw, false ); + readXMLNode< float >( hRoot, "pitch", this, &OpenGate::Movable::setPitch, false ); + readXMLNode< float >( hRoot, "roll", this, &OpenGate::Movable::setRoll, false ); + readXMLNode< Uint32 >( hRoot, "armor", this, &OpenGate::Movable::setArmor, false ); + readXMLNode< float >( hRoot, "dragfactor drag_factor", this, &OpenGate::Movable::setDragFactor, false ); } } //namespace OpenGate Modified: trunk/src/Moveable.h =================================================================== --- trunk/src/Moveable.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Moveable.h 2009-01-11 22:50:33 UTC (rev 930) @@ -26,10 +26,10 @@ namespace OpenGate{ /*!A movabeble entity has a mesh */ -class Moveable : public MeshEntity{ +class Movable : public MeshEntity{ public: - Moveable(); - virtual ~Moveable(){} + Movable(); + virtual ~Movable(){} virtual void readPropertiesFromXML( TiXmlHandle & hRoot ); Modified: trunk/src/OpcodeWrapper.cpp =================================================================== --- trunk/src/OpcodeWrapper.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/OpcodeWrapper.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -20,6 +20,8 @@ ***************************************************************************/ #include "OpcodeWrapper.h" + +#include "SectorCollisionObject.h" #include "SectorObject.h" #include "ResourceManager.h" #include "Projectile.h" @@ -103,6 +105,30 @@ return true; } +void OpcodeCollisionDetection::createObject( SectorCollisionObject * obj ){ + if ( obj && active_ ){ + OgreOpcode::CollisionObject * collObj = obj->pCollisionObject(); + + if ( !collObj ){ + OgreOpcode::EntityCollisionShape * collShape = collisionManager_->createEntityCollisionShape( obj->name() + "/CollShape" ); + if ( obj->pEntity() ){ + collShape->load( obj->pEntity() ); + } else { + std::cout << "OpcodeCollisionDetection::createObject( BaseObject * obj ), no entity defined for obj: " << obj->name(); + } + + collObj = collideInSectorContext_->createObject( obj->name() + "/CollObj" ); + collObj->setCollClass( collisionManager_->queryCollClass( obj->collisionClass() ) ); + collObj->setShape( collShape ); + + collObj->setClientData( obj ); + collideInSectorContext_->addObject( collObj ); + + obj->setCollisionObject( collObj ); + } + } +} + void OpcodeCollisionDetection::createObject( BaseObject * obj ){ if ( obj && active_ ){ @@ -129,19 +155,20 @@ } } +void OpcodeCollisionDetection::destroyObject( OgreOpcode::CollisionObject * obj ){ + if ( obj && active_ ){ + OgreOpcode::ICollisionShape * shape = obj->getShape(); + collideInSectorContext_->destroyObject( obj ); + collisionManager_->detachShape( shape ); + collisionManager_->destroyShape( shape ); + } +} + void OpcodeCollisionDetection::destroyObject( BaseObject * obj ){ if ( obj && active_ ){ - OgreOpcode::CollisionObject * collObj = obj->collisionObject(); - if ( collObj ){ - OgreOpcode::ICollisionShape * shape = collObj->getShape(); - collideInSectorContext_->destroyObject( collObj ); - - collisionManager_->detachShape( shape ); - collisionManager_->destroyShape( shape ); - - obj->setCollisionObject( NULL ); - } + destroyObject( obj->collisionObject() ); + obj->setCollisionObject( NULL ); } } @@ -157,6 +184,44 @@ } } +bool OpcodeCollisionDetection::checkCollideRay( SectorCollisionObject * obj, const Ogre::Ray & ray, double rayLength ){ + if ( active_ ){ + if ( !obj->destroyRequest() ){ + OgreOpcode::CollisionPair ** rayPickReport; + + uint nColl = collideInSectorContext_->rayCheck( ray, rayLength, OgreOpcode::COLLTYPE_EXACT, + OgreOpcode::COLLTYPE_ALWAYS_EXACT, rayPickReport ); + + // std::cout << "OpcodeCollisionDetection::checkCollideRay()" << " " << rayLength << " " << nColl <<std::endl; + + for ( uint i = 0; i < nColl; i ++ ){ + /* std::cout << "OpcodeCollisionDetection::checkCollideRay()" << " " << rayLength << " " << nColl <<std::endl;*/ + + OgreOpcode::CollisionObject * col1 = rayPickReport[ i ]->this_object; + OgreOpcode::CollisionObject * col2 = rayPickReport[ i ]->other_object; + + std::cout << "checkCollideRay: " << i << " " + << static_cast< SectorCollisionObject * >( col1->getClientData() )->name() << "<->" + << static_cast< SectorCollisionObject * >( col2->getClientData() )->name() << std::endl; + +// if ( obj->rtti() == PROJECTILE_RTTI ){ +// if ( dynamic_cast< Projectile * >( obj )->parent() != +// static_cast< BaseObject * >( col1->getClientData() ) ){ +// obj->mainNode()->setPosition( rayPickReport[ i ]->contact ); +// obj->collide( static_cast< BaseObject * >( col2->getClientData() ) ); +// static_cast< BaseObject * >( col1->getClientData() )->collide( obj ); +// return true; +// } +// } else if ( obj != col1->getClientData() ){ +// obj->collide( static_cast< BaseObject * >( col2->getClientData() ) ); +// static_cast< BaseObject * >( col1->getClientData() )->collide( obj ); +// } + } + } + } + return false; +} + bool OpcodeCollisionDetection::checkCollideRay( BaseObject * obj, const Ogre::Ray & ray, double rayLength){ if ( active_ ){ if ( !obj->isSetDestroyRequest() ){ Modified: trunk/src/OpcodeWrapper.h =================================================================== --- trunk/src/OpcodeWrapper.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/OpcodeWrapper.h 2009-01-11 22:50:33 UTC (rev 930) @@ -37,17 +37,32 @@ bool update( Ogre::Real elapsedTime ); - void createObject( BaseObject * obj ); + /*! Deregister and destroy CollisionObject */ + void destroyObject( OgreOpcode::CollisionObject * obj ); + + /*! Create and register SectorCollisionObject */ + void createObject( SectorCollisionObject * obj ); + + /*! Check if there is a collision of the object with a given ray */ + bool checkCollideRay( SectorCollisionObject * obj, const Ogre::Ray & ray, double rayLength ); + + /*! DEPRECATED */ + void createObject( BaseObject * obj ); - void destroyObject( BaseObject * obj ); + /*! DEPRECATED */ + void destroyObject( BaseObject * obj ); + /*! DEPRECATED */ void detach( BaseObject * obj ); + /*! DEPRECATED */ void attach( BaseObject * obj ); + /*! DEPRECATED */ bool checkCollideRay( BaseObject * obj, const Ogre::Ray & ray, double rayLength ); - void info( ); + /*! Write some debug infos about all collision objects to stdout*/ + void info( ); protected: OgreOpcode::CollisionContext * collideInSectorContext_; Modified: trunk/src/Opengate.h =================================================================== --- trunk/src/Opengate.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Opengate.h 2009-01-11 22:50:33 UTC (rev 930) @@ -32,6 +32,9 @@ namespace OpenGate{ +#define SECTORBASEOBJECT_RTTI 1 +#define SECTORMOVABLEOBJECT_RTTI 2 + #define SECTOROBJECTENVIRONMENT_RTTI 1000010 #define PROJECTILE_RTTI 100001 #define SECTOROBJECT_RTTI 100002 @@ -59,10 +62,14 @@ class ResourceManager; class Sector; +class SectorBaseObject; +class SectorCollisionObject; +class SectorMeshObject; + class SectorObject; class SectorObjectAvatar; class SectorObjectMissile; -class SectorObjectMoveable; +class SectorObjectMovable; class SectorObjectVessel; class Station; @@ -77,7 +84,7 @@ class MessageBodyShipStatus; class Missile; -class Moveable; +class Movable; class NetworkClient; class UnDockedState; Modified: trunk/src/Sector.cpp =================================================================== --- trunk/src/Sector.cpp 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Sector.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -338,7 +338,7 @@ } // if radar } // if avatar - for ( std::map< long, SectorObjectMoveable * >::iterator it = movableObjects_.begin(); it != movableObjects_.end(); ){ + for ( std::map< long, SectorObjectMovable * >::iterator it = movableObjects_.begin(); it != movableObjects_.end(); ){ if ( !it->second ){ log_->info( "Sector::update request for invalid object id: " + toStr( it->first ) ); @@ -417,10 +417,10 @@ return obj; } -SectorObjectMoveable * Sector::createMoveable( const Ogre::String & name, - Uint32 userID, Uint8 childID, Moveable & moveable ){ - SectorObjectMoveable * obj = new SectorObjectMoveable( name, this, userID, childID, - new Moveable( moveable ) ); +SectorObjectMovable * Sector::createMovable( const Ogre::String & name, + Uint32 userID, Uint8 childID, Movable & movable ){ + SectorObjectMovable * obj = new SectorObjectMovable( name, this, userID, childID, + new Movable( movable ) ); sectorObjects_.insert( obj ); movableObjects_[ obj->globalID() ] = obj; @@ -540,7 +540,7 @@ dynamic_cast< SectorObjectVessel *>( obj )->controler()->setVesselObject( NULL ); } movableObjects_.erase( obj->globalID() ); - objectHeap_[ dynamic_cast< SectorObjectVessel *>( obj )->moveable()->name() ].push_back( obj ); + objectHeap_[ dynamic_cast< SectorObjectVessel *>( obj )->movable()->name() ].push_back( obj ); break; case SECTOROBJECTMISSILE_RTTI: { // if ( dynamic_cast< SectorObjectMissile *>( obj )->target() == avatar_ ) { @@ -549,7 +549,7 @@ // //sendVesselDeRegister( obj ); // } movableObjects_.erase( obj->globalID() ); - objectHeap_[ dynamic_cast< SectorObjectMissile *>( obj )->moveable()->name() ].push_back( obj ); + objectHeap_[ dynamic_cast< SectorObjectMissile *>( obj )->movable()->name() ].push_back( obj ); //localAiObjects_.erase( dynamic_cast< SectorObjectMissile *>(obj)->globalID() ); // delete obj; @@ -750,7 +750,7 @@ } } - std::map< long, SectorObjectMoveable * >::iterator it; + std::map< long, SectorObjectMovable * >::iterator it; for ( std::map < long, const MessageBodyShipMovement * >::iterator i = singleMsg.begin(); i != singleMsg.end(); i++ ){ if ( ( it = movableObjects_.find( i->first ) ) != movableObjects_.end() ){ @@ -778,7 +778,7 @@ void Sector::receiveVesselStatus( const MessageBodyShipStatus & msg ){ if ( msg.senderID() != network_->userID() ){ - std::map< long, SectorObjectMoveable * >::iterator it; + std::map< long, SectorObjectMovable * >::iterator it; if ( ( it = movableObjects_.find( createGlobalID( msg.senderID(), msg.childID() ) ) ) != movableObjects_.end() ){ // log_->debug( "ReceiveVesselStatus for " + it->second->name( ) ); @@ -805,13 +805,13 @@ if ( !movableObjects_.count( createGlobalID( msg.senderID(), msg.childID() ) ) ){ if ( msg.childID() == 0 ){ log_->info( "Create player object " + msg.name()+ " " + toStr( msg.senderID() ) + " VesselID: " + toStr( msg.vesselID() ) ); - SectorObjectMoveable * obj = createMoveable( msg.name(), msg.senderID(), msg.childID(), + SectorObjectMovable * obj = createMovable( msg.name(), msg.senderID(), msg.childID(), *ResourceManager::getSingleton().entityManager->vessel( msg.vesselID() ) ); obj->mainNode()->setPosition( toOgreVec( msg.position() ) ); obj->setMass( msg.mass() ); obj->setMaxShield( msg.maxShield() ); obj->setMaxThrust( msg.maxThrust() ); - obj->setMaxSpeed( std::sqrt( msg.maxThrust() / obj->moveable()->dragFactor() ) ); + obj->setMaxSpeed( std::sqrt( msg.maxThrust() / obj->movable()->dragFactor() ) ); std::cout << msg << std::endl; } else { @@ -850,7 +850,7 @@ log_->info( std::string( "Receive deregister " ) + movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]->name() ); - SectorObjectMoveable *obj = movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]; + SectorObjectMovable *obj = movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]; obj->destroy(); } else { @@ -869,7 +869,7 @@ log_->info( std::string( "Receive vessel died " ) + movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]->name() ); - SectorObjectMoveable *obj = movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]; + SectorObjectMovable *obj = movableObjects_[ createGlobalID( msg.senderID(), msg.childID() ) ]; obj->deathSequence( 0.0 ); } else { log_->warn( std::string( "Died vessel request for unknown object: " ) + @@ -890,7 +890,7 @@ void Sector::receiveVesselAmmoHit( const MessageBodyShipAmmoHit & msg ){ if ( msg.senderID() != network_->userID() ){ - std::map< long, SectorObjectMoveable * >::iterator it; + std::map< long, SectorObjectMovable * >::iterator it; if ( ( it = movableObjects_.find( createGlobalID( msg.targetID(), msg.targetChildID() ) ) ) != movableObjects_.end() ){ // log_->cout( "ReceiveVesselAmmoHit for " + network_->userName( msg.targetID() ) + " " + toStr( msg.damage() ) ); @@ -906,7 +906,7 @@ " damage: " + toStr( msg.damage() ) + " this should not happen." ) ; std::cerr << "Available objects: " << std::endl; - for ( std::map< long, SectorObjectMoveable * >::iterator i = movableObjects_.begin(); i != movableObjects_.end(); i++){ + for ( std::map< long, SectorObjectMovable * >::iterator i = movableObjects_.begin(); i != movableObjects_.end(); i++){ std::cerr << "\t" << i->first << " " << i->second->name() << " " << std::endl; } } @@ -924,7 +924,7 @@ void Sector::receiveProjectile( const MessageBodyShipProjectileFired & msg ){ if ( msg.senderID() != network_->userID() ){ - std::map< long, SectorObjectMoveable * >::iterator it; + std::map< long, SectorObjectMovable * >::iterator it; if ( ( it = movableObjects_.find( createGlobalID( msg.senderID(), msg.childID() ) ) ) != movableObjects_.end() ){ Gun * gun = dynamic_cast < Gun * >( ResourceManager::getSingleton().entityManager->entity( msg.gunID() ) ); if ( gun->entityType() == GUN ){ Modified: trunk/src/Sector.h =================================================================== --- trunk/src/Sector.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/Sector.h 2009-01-11 22:50:33 UTC (rev 930) @@ -25,8 +25,8 @@ namespace OpenGate{ -//! Sector manages all stuff related to the undocked gamestate -/*! Sector manages all stuff related to the undocked gamestate. I.e. ships, environment, etc. +//! Sector manages all inspace stuff related to the undocked gamestate +/*! Sector manages all inspace stuff related to the undocked gamestate. I.e. ships, environment, etc. */ class Sector { public: @@ -36,13 +36,13 @@ /*! Destructor */ ~Sector( ); - /*! Return the associated Ogre::SceneManager */ - Ogre::SceneManager * sceneManager() { return sceneMgr_; } - - void setListener( UnDockedState * listener ){ listener_ = listener; } + /*! Return a ptr to the associated Ogre::SceneManager */ + inline Ogre::SceneManager * pSceneManager() { return sceneMgr_; } - UnDockedState * listener( ){ return listener_; } + inline void setListener( UnDockedState * listener ){ listener_ = listener; } + inline UnDockedState * listener( ){ return listener_; } + /*! Main update function, that will be called every frame from listener. These call update all associated objects. */ bool update( Ogre::Real elapsedTime ); @@ -71,7 +71,7 @@ SectorObject * createBeacon( const Ogre::Vector3 & pos ); - SectorObjectMoveable * createMoveable( const Ogre::String & name, Uint32 userId, Uint8 childId, Moveable & moveable ); + SectorObjectMovable * createMovable( const Ogre::String & name, Uint32 userId, Uint8 childId, Movable & movable ); SectorObjectVessel * createVessel( const Ogre::String & name, Uint32 userId, Uint8 childId, Vessel & vessel ); @@ -156,7 +156,7 @@ std::set< SectorObject * > sectorObjects_; - std::map< long, SectorObjectMoveable * > movableObjects_; + std::map< long, SectorObjectMovable * > movableObjects_; std::map< long, SectorObjectMissile * > localAiObjects_; float avatarDeathSequenceTime_; Added: trunk/src/SectorBaseObject.cpp =================================================================== --- trunk/src/SectorBaseObject.cpp (rev 0) +++ trunk/src/SectorBaseObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "SectorBaseObject.h" + +#include "LogManager.h" +#include "Sector.h" + +#include <OgreSceneManager.h> +#include <OgreSceneNode.h> + +namespace OpenGate{ + +SectorBaseObject::SectorBaseObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode ) + : name_( name ), sector_( sector ), destroyRequest_ ( false ){ + + Ogre::SceneNode * par = parentNode; + if ( !par ) par = sector_->pSceneManager()->getRootSceneNode(); + + try { + mainNode_ = par->createChildSceneNode( name_ ); + } catch ( Ogre::Exception & e ) { + LogManager::getSingleton().fatal( e.getFullDescription() ); + } +} + +SectorBaseObject::~SectorBaseObject( ){ + Ogre::SceneNode * par = mainNode_->getParentSceneNode(); + par->removeAndDestroyChild( mainNode_->getName() ); +} + +} Added: trunk/src/SectorBaseObject.h =================================================================== --- trunk/src/SectorBaseObject.h (rev 0) +++ trunk/src/SectorBaseObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,90 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORBASEOBJECT__H +#define _OPENGATE_SECTORBASEOBJECT__H + +#include "Opengate.h" + +namespace OpenGate{ + +/*! Baseclass for SectorObjects. All visible and interaction stuff that belongs to a sector is a SectorObject. Each SectorObject has a OgreSceneNode and provide a update function */ +class SectorBaseObject { +public: + /*! Construct SectorBaseObject, each SectorObject must have an unique name, a sector (which can be understand as a runtime container for the object) + and a parent Ogre::SceneNode, the default parent node is OgreSceneManager::rootSceneNode() */ + SectorBaseObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode = NULL ); + + /*! Default destructor */ + virtual ~SectorBaseObject( ); + + /*! Abstract class for runtime identification */ + virtual int rtti( ) const = 0; + + /*! Base update loop return fals either !update_() or destroyRequest */ + virtual bool update( Ogre::Real elapsedTime ) = 0; + + //** Start GETer/SETer + /*! Return the name of the object */ + inline std::string name() const { return name_; } + + /*! Return a ptr to the corresponding sector */ + inline Sector * pSector() { return sector_; } + + /*! Return a ptr to main OgreSceneNode for this SectorObject. */ + inline Ogre::SceneNode * pMainNode() { return mainNode_; } + + /*! Mark the object for destruction \n + To keep destruction thread safe, we just notify and let update return false, so the sector update cycle do the destruction job */ + inline void setDestroyRequest( bool dest = true ){ destroyRequest_ = dest; } + + /*! Return if the object is marked for destruction */ + inline bool destroyRequest() const { return destroyRequest_; } + //** END GETer/SETer + +protected: + std::string name_; + Sector * sector_; + Ogre::SceneNode * mainNode_; + + bool destroyRequest_; +}; + + /*! Sectorobject that represent space environment without collision*/ + class SectorEnvironmentObject : public SectorBaseObject { + SectorEnvironmentObject( const Ogre::String & name, Sector * sector ); + }; + + + + class SectorPlanetObject : public SectorEnvironmentObject{ + }; + class SectorStarfieldObject : public SectorEnvironmentObject{ + }; + class SectorSpaceDustObject : public SectorEnvironmentObject{ + }; + class SectorSpaceDecorationObject : public SectorEnvironmentObject{ + }; + +} //namespace OpenGate + +#endif //_OPENGATE_SECTORBASEOBJECT__H + + Added: trunk/src/SectorCollisionObject.cpp =================================================================== --- trunk/src/SectorCollisionObject.cpp (rev 0) +++ trunk/src/SectorCollisionObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "SectorCollisionObject.h" + +#include "LogManager.h" +#include "OpcodeWrapper.h" +#include "ResourceManager.h" +#include "Sector.h" + +#include <OgreSceneManager.h> +#include <OgreSceneNode.h> + +namespace OpenGate{ + +SectorCollisionObject::SectorCollisionObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode ) + : SectorBaseObject( name, sector, parentNode ), collObj_( NULL ), entity_( NULL ){ +} + +SectorCollisionObject::~SectorCollisionObject( ){ + if ( ResourceManager::getSingleton().collisionManager ){ + ResourceManager::getSingleton().collisionManager->destroyObject( collObj_ ); + } + if ( entity_ ) sector_->pSceneManager()->destroyEntity( entity_ ); +} + +} Added: trunk/src/SectorCollisionObject.h =================================================================== --- trunk/src/SectorCollisionObject.h (rev 0) +++ trunk/src/SectorCollisionObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORCOLLISIONOBJECT__H +#define _OPENGATE_SECTORCOLLISIONOBJECT__H + +#include "Opengate.h" +#include "SectorBaseObject.h" + +namespace OpenGate{ + +/*! Baseclass for SectorObjects that provide collisions and has an Ogre::Entity */ +class SectorCollisionObject : public SectorBaseObject { +public: + /*! Construct SectorObjectBase, */ + SectorCollisionObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode = NULL ); + + /*! Default destructor */ + virtual ~SectorCollisionObject( ); + + /*! Abstract method for runtime identification */ + virtual int rtti( ) const = 0; + + /*! Abstract method for collision handling, called during a collision by opcodewrapper */ + virtual void collide( SectorCollisionObject * object ) = 0; + + //** Start GETer/SETer + /*! Set the collisionObject.*/ + inline void setCollisionObject( OgreOpcode::CollisionObject * obj ){ collObj_ = obj; } + + /*! Return a ptr to the collisionObject.*/ + inline OgreOpcode::CollisionObject * pCollisionObject( ){ return collObj_; } + + /*! Return the type of the collisionObject, That determines the kind of collision detection.*/ + inline virtual std::string collisionClass() const { return "SectorObject"; } + + /*! Return a ptr to the Ogre::Entity that represents this SectorCollisionObject*/ + virtual Ogre::Entity * pEntity(){ return entity_; } +//** END GETer/SETer + +protected: + /*! Abstract update function */ + virtual bool update_( Ogre::Real elapsedTime ) = 0; + + OgreOpcode::CollisionObject * collObj_; + Ogre::Entity * entity_; +}; + + /*! Special child SectorObject that is assiciated to any parent SectorObject.*/ + class SectorChildObject : public SectorCollisionObject { + }; + class SectorPadObject : public SectorChildObject { + }; + class SectorProjectileObject : public SectorChildObject { + }; + class SectorStationPadObject : public SectorPadObject { + }; + class SectorBeaconPadObject : public SectorPadObject { + }; +} //namespace OpenGate + +#endif //_OPENGATE_SECTORCOLLISIONOBJECT__H + + Added: trunk/src/SectorMeshObject.cpp =================================================================== --- trunk/src/SectorMeshObject.cpp (rev 0) +++ trunk/src/SectorMeshObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,127 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "SectorMeshObject.h" + +#include "LogManager.h" +#include "OpcodeWrapper.h" +#include "ResourceManager.h" +#include "Sector.h" + +#include <OgreEntity.h> +#include <OgreSceneManager.h> +#include <OgreSceneNode.h> + +namespace OpenGate{ + +SectorMeshObject::SectorMeshObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode ) + : SectorCollisionObject( name, sector, parentNode ) { + + entityScaleNode_ = mainNode_->createChildSceneNode( mainNode_->getName() + "/scale" ); + entityRotNode_ = entityScaleNode_->createChildSceneNode( entityScaleNode_->getName() + "/rot" ); +} + +SectorMeshObject::~SectorMeshObject( ){ + if ( entity_ ) entityRotNode_->detachAllObjects(); + entityScaleNode_->removeAndDestroyChild( entityRotNode_->getName() ); + mainNode_->removeAndDestroyChild( entityScaleNode_->getName() ); +} + +void SectorMeshObject::setMesh( const std::string & meshname ){ + try { + entity_ = sector_->pSceneManager()->createEntity( name_, meshname ); + } catch( Ogre::Exception & e ){ + LogManager::getSingleton().warn( e.what() ); + entity_ = NULL; + return ; + } catch( ... ){ + LogManager::getSingleton().warn( "Unknown exception" ); + entity_ = NULL; + return ; + } + + entityRotNode_->attachObject( entity_ ); + + if ( ResourceManager::getSingleton().collisionManager ){ + ResourceManager::getSingleton().collisionManager->createObject( this ); + } +} + +void SectorMeshObject::setBaseRot( const Ogre::Real & yaw, const Ogre::Real & pitch, const Ogre::Real & roll ){ + if ( fabs( yaw ) >1e-4 ||fabs( pitch ) >1e-4 || fabs( roll ) >1e-4 ){ + std::cout << "SectorObject::setBaseRot " << name_ << yaw + << " " << pitch << " " << roll << std::endl; + + entityRotNode_->yaw( Ogre::Degree( yaw ) ); + entityRotNode_->pitch( Ogre::Degree( pitch ) ); + entityRotNode_->roll( Ogre::Degree( roll ) ); + } +} + +void SectorMeshObject::setBaseSize( const Ogre::Vector3 & size ){ + if ( size == Ogre::Vector3::ZERO ) return; + + /* Ogre::Vector3 oldSize( entityRotNode_->getOrientation() * ( + entityRotNode_->_getWorldAABB().getMaximum()- + entityRotNode_->_getWorldAABB().getMinimum() ) ); + */ + Ogre::Vector3 oldSize( entity_->getBoundingBox().getMaximum()- entity_->getBoundingBox().getMinimum() ); + + Ogre::Vector3 scale( size / oldSize ); + + scale[ 0 ] = fabs( scale[ 0 ] ); + scale[ 1 ] = fabs( scale[ 1 ] ); + scale[ 2 ] = fabs( scale[ 2 ] ); + + if ( scale[ 0 ] == 0.0 && scale[ 1 ] == 0.0 && scale[ 2 ] != 0.0) { + scale[ 0 ] = scale[ 2 ]; scale[ 1 ] = scale[ 2 ]; + } + if ( scale[ 0 ] == 0.0 && scale[ 1 ] != 0.0 && scale[ 2 ] == 0.0) { + scale[ 0 ] = scale[ 1 ]; scale[ 2 ] = scale[ 1 ]; + } + if ( scale[ 0 ] != 0.0 && scale[ 1 ] == 0.0 && scale[ 2 ] == 0.0) { + scale[ 2 ] = scale[ 0 ]; scale[ 1 ] = scale[ 0 ]; + } + + std::cout << name_ << std::endl; + std::cout << "sol: " << size << std::endl; + std::cout << "ist: " << oldSize << std::endl; + std::cout << scale << std::endl; + + std::cout << entityRotNode_->_getWorldAABB().getMaximum() << " " << + entityRotNode_->_getWorldAABB().getMinimum() << " " << + entityRotNode_->_getWorldAABB().getMaximum()-entityRotNode_->_getWorldAABB().getMinimum() + << std::endl; + + std::cout << entity_->getBoundingBox().getMaximum()- entity_->getBoundingBox().getMinimum() << std::endl; + + std::cout << entityRotNode_->getOrientation() * ( entity_->getBoundingBox().getMaximum()- + entity_->getBoundingBox().getMinimum() ) << std::endl; + + std::cout << mainNode_->_getWorldAABB().getMaximum() - mainNode_->_getWorldAABB().getMinimum() << std::endl; + std::cout << mainNode_->_getDerivedScale() << std::endl; + + entityScaleNode_->scale( scale ); +// baseSize_ = size; +// baseScale_ = scale; +} + + +} Added: trunk/src/SectorMeshObject.h =================================================================== --- trunk/src/SectorMeshObject.h (rev 0) +++ trunk/src/SectorMeshObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,74 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORMESHOBJECT__H +#define _OPENGATE_SECTORMESHOBJECT__H + +#include "Opengate.h" +#include "SectorCollisionObject.h" + +namespace OpenGate{ + +/*! Baseclass for SectorObjects with Ogre::Meshs. */ +class SectorMeshObject : public SectorCollisionObject { +public: + /*! Construct SectorObjectBase, */ + SectorMeshObject( const std::string & name, Sector * sector, Ogre::SceneNode * parentNode = NULL ); + + /*! Default destructor */ + virtual ~SectorMeshObject( ); + + /*! Abstract method for runtime identification */ + virtual int rtti( ) const = 0; + + /*! Set the the mesh by a given meshname and initialize collision, the meshname must known to the global ogre::resourcemanager */ + void setMesh( const std::string & meshname ); + + /*! Static scale the mesh to size */ + void setBaseSize( const Ogre::Vector3 & size ); + + /*! Static rotation to the mesh */ + void setBaseRot( const Ogre::Real & yaw, const Ogre::Real & pitch = 0, const Ogre::Real & roll = 0 ); + + /*! Returns a ptr to the base scale node */ + inline Ogre::SceneNode * pScaleNode() { return entityScaleNode_;} + + /*! Returns a ptr to the base rotation node */ + inline Ogre::SceneNode * pRotNode() { return entityRotNode_;} + +protected: + Ogre::SceneNode * entityScaleNode_; // Main character node for base size + Ogre::SceneNode * entityRotNode_; // Main character node for base rotation +}; + + class SectorStationObject : public SectorMeshObject{ + }; + class SectorBeaconObject : public SectorMeshObject{ + }; + class SectorAsteroidObject : public SectorMeshObject{ + }; + class SectorAnomalieObject : public SectorMeshObject{ + }; + +} //namespace OpenGate + +#endif //_OPENGATE_SECTORMESHOBJECT__H + + Added: trunk/src/SectorMovableObject.cpp =================================================================== --- trunk/src/SectorMovableObject.cpp (rev 0) +++ trunk/src/SectorMovableObject.cpp 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,128 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "Opengate.h" + +#include "LogManager.h" +#include "Moveable.h" +#include "OpcodeWrapper.h" +#include "ResourceManager.h" +#include "SectorMovableObject.h" + +#include <OgreRay.h> +#include <OgreSceneNode.h> + +namespace OpenGate{ + +SectorMovableObject::SectorMovableObject( const std::string & name, Sector * sector, Movable * movable ) + : SectorMeshObject( name, sector, NULL ), movable_( movable ){ + + setMesh( movable_->meshPtr()->getName() ); + + setBaseRot( movable_->baseYaw(), movable_->basePitch(), movable_->baseRoll() ); + setBaseSize( movable_->baseSize() ); + reset_(); +} + +SectorMovableObject::~SectorMovableObject( ){ +} + + +void SectorMovableObject::reset_( ){ + lifeTime_ = 0.0; + speed_ = 0.0; + mass_ = 1; + acc_ = Ogre::Vector3::ZERO; + vel_ = Ogre::Vector3::ZERO; +} + +void SectorMovableObject::collide( SectorCollisionObject * object ){ + std::cout << "SectorMovableObject: " << this->name() << " collide with " + << object->rtti() << " " << object->name() << std::endl; +} + +bool SectorMovableObject::update( Ogre::Real elapsedTime ){ + if ( elapsedTime < 0.001 ) return true; + lifeTime_ += elapsedTime; + + if ( destroyRequest_ ) return false; + + Ogre::Real rotFric = rotFriction(); + mainNode_->yaw( Ogre::Degree( yaw_ * ( movable_->yaw() * rotFric ) * elapsedTime ) ); + mainNode_->pitch( Ogre::Degree( pitch_ * ( movable_->pitch() * rotFric ) * elapsedTime ) ); + mainNode_->roll( Ogre::Degree( roll_ * ( movable_->roll() * rotFric ) * elapsedTime ) ); + + Ogre::Vector3 thrustDir( mainNode_->getOrientation().zAxis().normalisedCopy() ); + Ogre::Vector3 flightDir( vel_.normalisedCopy() ); + + thrustDir.x = round( thrustDir.x, 7 ); thrustDir.y = round( thrustDir.y, 7 ); thrustDir.z = round( thrustDir.z, 7 ); + flightDir.x = round( flightDir.x, 7 ); flightDir.y = round( flightDir.y, 7 ); flightDir.z = round( flightDir.z, 7 ); + + //** thrust = mass * a; + if ( mass_ > 0 ){ + acc_ = ( - thrustDir * (double)thrust_ - flightDir * transFriction() ) / (double)mass_; + } else { + LogManager::getSingleton().fatal( name_ + " mass: " + toStr( mass_ ) ); + } + +// if ( thrust_ > 0 ){ +// std::cout << name_ << " " << thrustDir << " " << flightDir << " " << thrustDir + flightDir << std::endl; +// std::cout << name_ << " " << acc_.normalisedCopy() << " " << vel_.normalisedCopy() << std::endl; +// std::cout << name_ << " " << acc_ << " " << vel_ << std::endl; +// std::cout << yaw_ << " " << pitch_ << " " << roll_ << std::endl; +// std::cout << thrust_ << " " << movable_->dragFactor() << " " << breakPressed_ +// << " " << friction << " " << v << " " << mass_ << std::endl; +// } + + if ( brakePressed_ ) { + if ( speed_ > 0 ) { + acc_ -= flightDir * brakingAcc(); + } + } + + //** v = a * t; + vel_ += acc_ * elapsedTime; + speed_ = vel_.length(); + + if ( speed_ > movable_->maxSpeed() ){ + vel_ *= movable_->maxSpeed() / speed_; + } else if ( speed_ < 0.01 ){ + vel_ *= 0.0; + } + + mainNode_->translate( ( vel_ + interpolateVel_ ) * elapsedTime ); + + //** because of the discrete jumps between to frames we have to check for collisions via ray; + if ( collObj_ ){ + Ogre::Ray rayNoNextPos( mainNode_->_getDerivedPosition(), vel_.normalisedCopy() ); + ResourceManager::getSingleton().collisionManager->checkCollideRay( this, rayNoNextPos, (vel_ * elapsedTime).length() ); + } + +// //** snap quaternion +// Ogre::Quaternion rnd( mainNode_->getOrientation() ); +// mainNode_->setOrientation( round( rnd.w, 5 ), round( rnd.x, 5 ), round( rnd.y, 5 ), round( rnd.z, 5 ) ); + + return true; +} + + +} //namespace OpenGate + + Added: trunk/src/SectorMovableObject.h =================================================================== --- trunk/src/SectorMovableObject.h (rev 0) +++ trunk/src/SectorMovableObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -0,0 +1,104 @@ +/*************************************************************************** + * Copyright (C) 2009 by OpenGate development team * + * spo...@us... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef _OPENGATE_SECTORMOVABLEOBJECT__H +#define _OPENGATE_SECTORMOVABLEOBJECT__H + +#include "Opengate.h" +#include "SectorMeshObject.h" + +namespace OpenGate{ + +/*! Baseclass for SectorObjects that related to any user */ +class SectorMovableObject : public SectorMeshObject { +public: + /*! Construct SectorObjectBase, Movable is a property template for the moveable object*/ + SectorMovableObject( const std::string & name, Sector * sector, Movable * movable ); + + /*! Default destructor */ + virtual ~SectorMovableObject( ); + + /*! Abstract method for runtime identification */ + virtual int rtti( ) const { return SECTORMOVABLEOBJECT_RTTI; } + + virtual bool update( Ogre::Real elapsedTime ); + + /*! Decide what happen if this object collide with another. */ + virtual void collide( SectorCollisionObject * object ); + + /*! Returns a handle to the actual moveable entity */ + inline Movable * movable(){ return movable_; } + + /*! Returns the lifetime of this object in seconds */ + inline double lifeTime() const { return lifeTime_; } + + /*! Return the relative thrust values from 0 to 1*/ + inline Ogre::Real thrustRate() const { return thrustRate_; } + + /*! Returns the speed of the object */ + inline double speed() const { return speed_; } + + /*! Fixed braking acceleration.*/ + inline Ogre::Real brakingAcc(){ return 5.0; } + + /*! Calculate friction factor for yaw, pitch, roll, friction increase by thrust */ + inline Ogre::Real rotFriction(){ return 0.4 + ( 0.6 * ( 1.0 - thrustRate() ) ); } + + /*! Calculate friction factor for translate increase by speed */ + inline Ogre::Real transFriction(){ return movable_->dragFactor() * speed_ * speed_; } + +protected: + virtual void reset_( ); + + Movable * movable_; + + Ogre::Real yaw_; + Ogre::Real pitch_; + Ogre::Real roll_; + + Ogre::Vector3 acc_; + Ogre::Vector3 vel_; + + Ogre::Quaternion interpolateRot_; + Ogre::Vector3 interpolateVel_; + + bool brakePressed_; + + double lifeTime_; + double speed_; + double maxSpeed_; + double thrustRate_; + + Uint32 thrust_; + Uint32 mass_; +}; + + class SectorMissileObject : public SectorMovableObject{ + }; + class SectorVesselObject : public SectorMovableObject{ + }; + class SectorAvatarObject : public SectorVesselObject{ + }; + +} //namespace OpenGate + +#endif //_OPENGATE_SECTORMOVABLEOBJECT__H + + Modified: trunk/src/SectorObject.h =================================================================== --- trunk/src/SectorObject.h 2009-01-11 21:03:19 UTC (rev 929) +++ trunk/src/SectorObject.h 2009-01-11 22:50:33 UTC (rev 930) @@ -24,15 +24,10 @@ #include "Opengate.h" #include "BaseObject.h" - #include <OgreVector3.h> -namespace OgreOpcode{ - class CollisionObject; -} - namespace OpenGate{ - + class SectorObject : public BaseObject { public: /*! Constructor fo... [truncated message content] |
From: <Ult...@us...> - 2009-01-11 21:03:28
|
Revision: 929 http://opengate.svn.sourceforge.net/opengate/?rev=929&view=rev Author: Ultrasick Date: 2009-01-11 21:03:19 +0000 (Sun, 11 Jan 2009) Log Message: ----------- trying to rename "GUI" to "gui" in several steps. can't do that in 1 step in windows Removed Paths: ------------- templates/gui2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-11 21:01:30
|
Revision: 928 http://opengate.svn.sourceforge.net/opengate/?rev=928&view=rev Author: Ultrasick Date: 2009-01-11 21:01:27 +0000 (Sun, 11 Jan 2009) Log Message: ----------- trying to rename "GUI" to "gui" in several steps. can't do that in 1 step in windows Added Paths: ----------- templates/gui/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ult...@us...> - 2009-01-11 21:00:24
|
Revision: 927 http://opengate.svn.sourceforge.net/opengate/?rev=927&view=rev Author: Ultrasick Date: 2009-01-11 21:00:13 +0000 (Sun, 11 Jan 2009) Log Message: ----------- trying to rename "GUI" to "gui" in several steps. can't do that in 1 step in windows Removed Paths: ------------- templates/GUI/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |