gcblue-commits Mailing List for Global Conflict Blue (Page 71)
Status: Alpha
Brought to you by:
ddcforge
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(112) |
Feb
(106) |
Mar
(88) |
Apr
(111) |
May
(53) |
Jun
(60) |
Jul
(58) |
Aug
(61) |
Sep
(45) |
Oct
(31) |
Nov
(71) |
Dec
(70) |
2005 |
Jan
(33) |
Feb
(57) |
Mar
(98) |
Apr
(47) |
May
(53) |
Jun
(79) |
Jul
(79) |
Aug
|
Sep
(33) |
Oct
(1) |
Nov
(20) |
Dec
(64) |
2006 |
Jan
(20) |
Feb
(1) |
Mar
(43) |
Apr
(11) |
May
(8) |
Jun
(23) |
Jul
|
Aug
(28) |
Sep
(58) |
Oct
(25) |
Nov
(47) |
Dec
(70) |
From: <ddc...@us...> - 2004-01-02 15:03:32
|
Update of /cvsroot/gcblue/gcb_wx/maps In directory sc8-pr-cvs1:/tmp/cvs-serv19093/maps Added Files: LICENSE.txt Log Message: --- NEW FILE: LICENSE.txt --- Map files copyright (C) 2002-2003 Dewitt Colclough unless otherwise noted. Map source data based on GLOBE project data. Map files may be distributed under the terms of the GCB Data License v1.0. ------------------------------------------------------------------------------------- GCB Data License v1.0 For the purpose of identifying the copyright holders, this license defines the "GCB Team" as the following people: * Global Conflict Blue (GCB) Project Manager * Global Conflict Blue Members The names and e-mails of those people are listed in the GCB site at the address: http://www.gcblue.com Material to which this license applies may include the following: * Texts * Scenario Files * 3D Models * Images * Sounds * Musics TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this GCB Data License. 1. Terms defined in this Article 1, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions: * The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law. * "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement. * Each licensee is addressed as "you". 2. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the GCB Team. 3. You may use the provided Material, for personal use only, in conjunction with GCB software directly distributed by the GCB Team. NO WARRANTY 4. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU. 5. IN NO EVENT SHALL THE GCB TEAM BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL. END OF TERMS AND CONDITIONS |
From: <ddc...@us...> - 2004-01-02 15:03:32
|
Update of /cvsroot/gcblue/gcb_wx/images In directory sc8-pr-cvs1:/tmp/cvs-serv19093/images Added Files: LICENSE.txt Log Message: --- NEW FILE: LICENSE.txt --- Image files copyright (C) 2002-2003 Dewitt Colclough unless otherwise noted. Some images were taken from U.S. Navy Photos archives. Image files may be distributed under the terms of the GCB Data License v1.0. ------------------------------------------------------------------------------------- GCB Data License v1.0 For the purpose of identifying the copyright holders, this license defines the "GCB Team" as the following people: * Global Conflict Blue (GCB) Project Manager * Global Conflict Blue Members The names and e-mails of those people are listed in the GCB site at the address: http://www.gcblue.com Material to which this license applies may include the following: * Texts * Scenario Files * 3D Models * Images * Sounds * Musics TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this GCB Data License. 1. Terms defined in this Article 1, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions: * The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law. * "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement. * Each licensee is addressed as "you". 2. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the GCB Team. 3. You may use the provided Material, for personal use only, in conjunction with GCB software directly distributed by the GCB Team. NO WARRANTY 4. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU. 5. IN NO EVENT SHALL THE GCB TEAM BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL. END OF TERMS AND CONDITIONS |
From: <ddc...@us...> - 2004-01-02 15:03:31
|
Update of /cvsroot/gcblue/gcb_wx/database In directory sc8-pr-cvs1:/tmp/cvs-serv19093/database Added Files: LICENSE.txt Log Message: --- NEW FILE: LICENSE.txt --- Database files Copyright (C) 2002-2003 Dewitt Colclough unless otherwise noted. Database files may be distributed under the terms of the GCB Data License v1.0. ------------------------------------------------------------------------------------- GCB Data License v1.0 For the purpose of identifying the copyright holders, this license defines the "GCB Team" as the following people: * Global Conflict Blue (GCB) Project Manager * Global Conflict Blue Members The names and e-mails of those people are listed in the GCB site at the address: http://www.gcblue.com Material to which this license applies may include the following: * Texts * Scenario Files * 3D Models * Images * Sounds * Musics TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this GCB Data License. 1. Terms defined in this Article 1, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions: * The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law. * "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement. * Each licensee is addressed as "you". 2. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the GCB Team. 3. You may use the provided Material, for personal use only, in conjunction with GCB software directly distributed by the GCB Team. NO WARRANTY 4. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU. 5. IN NO EVENT SHALL THE GCB TEAM BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL. END OF TERMS AND CONDITIONS |
From: <ddc...@us...> - 2004-01-02 15:03:31
|
Update of /cvsroot/gcblue/gcb_wx In directory sc8-pr-cvs1:/tmp/cvs-serv19093 Added Files: GCB_DATA _LICENSE.txt Log Message: --- NEW FILE: GCB_DATA _LICENSE.txt --- ------------------------------------------------------------------------------------- GCB Data License v1.0 For the purpose of identifying the copyright holders, this license defines the "GCB Team" as the following people: * Global Conflict Blue (GCB) Project Manager * Global Conflict Blue Members The names and e-mails of those people are listed in the GCB site at the address: http://www.gcblue.com Material to which this license applies may include the following: * Texts * Scenario Files * 3D Models * Images * Sounds * Musics TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this GCB Data License. 1. Terms defined in this Article 1, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions: * The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law. * "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement. * Each licensee is addressed as "you". 2. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the GCB Team. 3. You may use the provided Material, for personal use only, in conjunction with GCB software directly distributed by the GCB Team. NO WARRANTY 4. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU. 5. IN NO EVENT SHALL THE GCB TEAM BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL. END OF TERMS AND CONDITIONS |
From: <ddc...@us...> - 2004-01-02 15:03:31
|
Update of /cvsroot/gcblue/gcb_wx/3d In directory sc8-pr-cvs1:/tmp/cvs-serv19093/3d Added Files: LICENSE.txt Log Message: --- NEW FILE: LICENSE.txt --- 3D Model and texture files Copyright (C) 2002-2003 Marcelo Caceres unless otherwise noted. 3D Model and texture files may be distributed under the terms of the GCB Data License v1.0. ------------------------------------------------------------------------------------- GCB Data License v1.0 For the purpose of identifying the copyright holders, this license defines the "GCB Team" as the following people: * Global Conflict Blue (GCB) Project Manager * Global Conflict Blue Members The names and e-mails of those people are listed in the GCB site at the address: http://www.gcblue.com Material to which this license applies may include the following: * Texts * Scenario Files * 3D Models * Images * Sounds * Musics TERMS AND CONDITIONS FOR USAGE, COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any material or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this GCB Data License. 1. Terms defined in this Article 1, and parenthetically elsewhere, shall throughout this License have the meanings here and there provided. Defined terms may be used in the singular or plural. Definitions: * The "Material", below, refers to any such material or work, and a "work based on the Material" means either the Material or any Derivative Work under copyright law. * "Derivative Work" shall mean a work containing the Material or a portion of it, such as a revision, modification, enhancement, adaptation, translation (including compilation or recompilation by computer), abridgement, condensation, expansion, or any other form in which such preexisting works may be recast, transformed, or adapted, and that, if prepared without authorization of the owner of the copyright in such preexisting work, would constitute a copyright infringement. * Each licensee is addressed as "you". 2. You may not copy, modify, publish, transmit, sell, participate in the transfer or sale or reproduce, create Derivative Works from, distribute, perform, display or in any way exploit any of the Material released under this License unless expressly permitted by the GCB Team. 3. You may use the provided Material, for personal use only, in conjunction with GCB software directly distributed by the GCB Team. NO WARRANTY 4. THERE IS NO WARRANTY FOR THE MATERIAL PROVIDED, TO THE EXTENT PERMITTED BY APPLICABLE LAW. THE MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE MATERIAL IS WITH YOU. 5. IN NO EVENT SHALL THE GCB TEAM BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE MATERIAL. END OF TERMS AND CONDITIONS |
From: <ddc...@us...> - 2004-01-02 00:45:21
|
Update of /cvsroot/gcblue/gcb_wx/src/common In directory sc8-pr-cvs1:/tmp/cvs-serv6686/src/common Modified Files: tcSound.cpp Log Message: more briefing and scenario generation features Index: tcSound.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/common/tcSound.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** tcSound.cpp 22 Dec 2003 02:32:37 -0000 1.9 --- tcSound.cpp 1 Jan 2004 23:44:46 -0000 1.10 *************** *** 381,388 **** { alGetSourcei(SourceEffect[i],AL_SOURCE_STATE,&play); ! printf(" buffer %d: %d\n",i,play==AL_PLAYING); if (play!=AL_PLAYING) { - ReleaseEffectBuffer(i); } --- 381,387 ---- { alGetSourcei(SourceEffect[i],AL_SOURCE_STATE,&play); ! //printf(" buffer %d: %d\n",i,play==AL_PLAYING); if (play!=AL_PLAYING) { ReleaseEffectBuffer(i); } |
From: <ddc...@us...> - 2004-01-02 00:45:10
|
Update of /cvsroot/gcblue/gcb_wx/src/graphics In directory sc8-pr-cvs1:/tmp/cvs-serv6686/src/graphics Modified Files: tcGraphicsEngine.cpp Log Message: more briefing and scenario generation features Index: tcGraphicsEngine.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/graphics/tcGraphicsEngine.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** tcGraphicsEngine.cpp 14 Dec 2003 20:58:47 -0000 1.11 --- tcGraphicsEngine.cpp 1 Jan 2004 23:44:46 -0000 1.12 *************** *** 784,788 **** { std::string text = "3D driver does not support alpha-blending. " ! "This may result in slow performance. ("; text += GetDriverInfo(); text += ")\n"; --- 784,788 ---- { std::string text = "3D driver does not support alpha-blending. " ! "This may result in slow performance. Try F12 to disable elevation map blending. ("; text += GetDriverInfo(); text += ")\n"; |
From: <ddc...@us...> - 2004-01-01 23:58:01
|
Update of /cvsroot/gcblue/gcb_data/database In directory sc8-pr-cvs1:/tmp/cvs-serv5934/database Modified Files: air.csv generic.csv launcher.csv missile.csv Log Message: Index: air.csv =================================================================== RCS file: /cvsroot/gcblue/gcb_data/database/air.csv,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** air.csv 8 Dec 2003 03:07:27 -0000 1.1 --- air.csv 1 Jan 2004 23:40:34 -0000 1.2 *************** *** 1,3 **** Database class,Model class id,Functional class id,ImageFileName,3DModelFileName,Description,Rcs_dbsm,MaxSpeed_kts,Accel_ktsps,TurnRate_degps,FuelCapacity [kg],FuelRate [kg/s],MaxAltitude_m,MaxDepth_m,AltitudeRate_mps,Toughness,Damage,Weight[kg],MaxThrust[N],Range_km,Launcher1,Launcher2,Launcher3,Launcher4,Launcher5,Launcher6,Launcher7,Launcher8,Sensor1,Sensor2,Sensor3,Sensor4,Sensor5,Sensor6,Sensor7,Sensor8,AfterburnFuelRate_kgps,AfterburnThrust_N,DragArea_sm,WingArea_sm,Cdpsub,Cdptran,Cdpsup,Mcm,Msupm,Kdi,MaxAoa_rad,MaxCl,Gmax ! AeroTest1,12,33,NONE,gr3uk,Test aircraft 1,0,1000,20,20,2000,1,15600,0,0,1,0,22000,215000,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,,,50,500000,200,40,5,10,7,0.9,1.1,0.5,0.1,0.5,5 ! AeroTest2,12,33,NONE,gr3uk,Test aircraft 2,0,1000,20,20,2000,1,15600,0,0,1,0,22000,215000,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,,,50,500000,200,40,5,25,50,0.9,1.1,0.5,0.1,0.5,5 --- 1,5 ---- Database class,Model class id,Functional class id,ImageFileName,3DModelFileName,Description,Rcs_dbsm,MaxSpeed_kts,Accel_ktsps,TurnRate_degps,FuelCapacity [kg],FuelRate [kg/s],MaxAltitude_m,MaxDepth_m,AltitudeRate_mps,Toughness,Damage,Weight[kg],MaxThrust[N],Range_km,Launcher1,Launcher2,Launcher3,Launcher4,Launcher5,Launcher6,Launcher7,Launcher8,Sensor1,Sensor2,Sensor3,Sensor4,Sensor5,Sensor6,Sensor7,Sensor8,AfterburnFuelRate_kgps,AfterburnThrust_N,DragArea_sm,WingArea_sm,Cdpsub,Cdptran,Cdpsup,Mcm,Msupm,Kdi,MaxAoa_rad,MaxCl,Gmax ! AeroTest1,12,33,NONE,gr3uk,Test aircraft 1,10,1000,20,20,2000,1,15600,0,0,1,0,22000,215000,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,,,50,500000,200,40,5,10,7,0.9,1.1,0.3,0.1,0.5,5 ! AeroTest2,12,33,NONE,gr3uk,Test aircraft 2,10,1000,20,20,2000,1,15600,0,0,1,0,22000,215000,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,,,50,500000,200,40,5,25,50,0.9,1.1,0.3,0.1,0.5,5 ! Mig25,12,33,NONE,m50_co,Mig25 aero model test,10,2000,20,20,5000,1,20000,0,0,1,0,15000,150000,0,AAM Launcher,,,,,,,,Fighter radar,,,,,,,,15,220000,0.93,40,0.7,1.2,1,0.9,1.1,0.3,0.1,0.5,5 ! Harrier GR3a,12,33,NONE,gr3uk,"Single-engine; ""jump-jet"" fighter-bomber designed to fly from combat areas and aircraft carriers and to support ground forces. It was made by Hawker Siddeley Aviation and first flew on Aug. 31; 1966; after a long period of development.Powered by a vectored-thrust turbofan engine; the plane diverted its engine thrust downward for vertical takeoff using rotatable engine exhaust ports. It could carry a combination of armaments; including air-to-air missiles; air-to-surface antiship missiles; rockets; bombs.ÍÍ",0,639,20,20,1000,1,15600,0,0,1,0,15000,60000,0,AAM-SR Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,,,15,85000,1,40,0.7,5,20,0.9,1.1,0.3,0.1,0.5,5 Index: generic.csv =================================================================== RCS file: /cvsroot/gcblue/gcb_data/database/generic.csv,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** generic.csv 8 Dec 2003 03:07:27 -0000 1.2 --- generic.csv 1 Jan 2004 23:40:34 -0000 1.3 *************** *** 4,8 **** Cruiser,1,18,NONE,type45edit,No description is available.,0,32,1,1,0,0,0,0,0,1,0,1,0,0,SAM Launcher,SAM Launcher,SSM Launcher,,,,,,Air search radar,ESM-A,,,,,, Destroyer,1,18,NONE,type45edit,No description is available.,0,30,1,2,0,0,0,0,0,1,0,1,0,0,SAM Launcher,SSM Launcher,,,,,,,Generic radar,,,,,,, ! AEW aircraft,4,33,NONE,fa1uk,No description is available.,0,300,10,8,1000,0,10000,0,0,1,0,1,0,0,,,,,,,,,AEW radar,ESM-A,,,,,, Harrier GR3+,4,33,NONE,gr3uk,"Single-engine; ""jump-jet"" fighter-bomber designed to fly from combat areas and aircraft carriers and to support ground forces. It was made by Hawker Siddeley Aviation and first flew on Aug. 31; 1966; after a long period of development.Powered by a vectored-thrust turbofan engine; the plane diverted its engine thrust downward for vertical takeoff using rotatable engine exhaust ports. It could carry a combination of armaments; including air-to-air missiles; air-to-surface antiship missiles; rockets; bombs.ÍÍ",0,639,20,20,1000,0,15600,0,0,1,0,22000,21500,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,, Hermes,2,18,NONE,hermes,Model from Marcelo's Falklands set.ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ,0,30,0.25,1,0,0,0,0,0,1,0,1,0,0,SAM Launcher,,,,,,,,Generic radar,,,,,,, --- 4,8 ---- Cruiser,1,18,NONE,type45edit,No description is available.,0,32,1,1,0,0,0,0,0,1,0,1,0,0,SAM Launcher,SAM Launcher,SSM Launcher,,,,,,Air search radar,ESM-A,,,,,, Destroyer,1,18,NONE,type45edit,No description is available.,0,30,1,2,0,0,0,0,0,1,0,1,0,0,SAM Launcher,SSM Launcher,,,,,,,Generic radar,,,,,,, ! AEW aircraft,4,33,NONE,c130e_ar,No description is available.,0,300,10,8,1000,0,10000,0,0,1,0,1,0,0,,,,,,,,,AEW radar,ESM-A,,,,,, Harrier GR3+,4,33,NONE,gr3uk,"Single-engine; ""jump-jet"" fighter-bomber designed to fly from combat areas and aircraft carriers and to support ground forces. It was made by Hawker Siddeley Aviation and first flew on Aug. 31; 1966; after a long period of development.Powered by a vectored-thrust turbofan engine; the plane diverted its engine thrust downward for vertical takeoff using rotatable engine exhaust ports. It could carry a combination of armaments; including air-to-air missiles; air-to-surface antiship missiles; rockets; bombs.ÍÍ",0,639,20,20,1000,0,15600,0,0,1,0,22000,21500,0,AAM Launcher,ASM Launcher,,,,,,,Fighter radar,,,,,,, Hermes,2,18,NONE,hermes,Model from Marcelo's Falklands set.ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ,0,30,0.25,1,0,0,0,0,0,1,0,1,0,0,SAM Launcher,,,,,,,,Generic radar,,,,,,, Index: launcher.csv =================================================================== RCS file: /cvsroot/gcblue/gcb_data/database/launcher.csv,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** launcher.csv 30 Nov 2003 18:00:39 -0000 1.1 --- launcher.csv 1 Jan 2004 23:40:34 -0000 1.2 *************** *** 3,5 **** AAM Launcher,0,0,NONE,,No description is available.,4,AAM-I,4,AAM-I,,,,,,,,,,,,,, ASM Launcher,0,0,NONE,,No description is available.,4,ASM-I,4,ASM-I,,,,,,,,,,,,,, ! SSM Launcher,0,0,NONE,,No description is available.,8,SSM-I,8,SSM-I,,,,,,,,,,,,,, --- 3,6 ---- AAM Launcher,0,0,NONE,,No description is available.,4,AAM-I,4,AAM-I,,,,,,,,,,,,,, ASM Launcher,0,0,NONE,,No description is available.,4,ASM-I,4,ASM-I,,,,,,,,,,,,,, ! SSM Launcher,0,0,NONE,,No description is available.,10,SSM-I,10,SSM-I,,,,,,,,,,,,,, ! AAM-SR Launcher,0,0,NONE,,No description is available.,4,AAM-SR,4,AAM-SR,,,,,,,,,,,,,, Index: missile.csv =================================================================== RCS file: /cvsroot/gcblue/gcb_data/database/missile.csv,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** missile.csv 30 Nov 2003 18:00:40 -0000 1.1 --- missile.csv 1 Jan 2004 23:40:34 -0000 1.2 *************** *** 1,5 **** Database class,Model class id,Functional class id,ImageFileName,3DModelFileName,Description,Mass_kg,DragArea_sm,Gmax,MaxTurnRate_degps,Cdpsub,Cdptran,Cdpsup,Mcm,Msupm,Kdi,BoostThrust_N,BoostTime_s,SustThrust_N,SustTime_s,Damage,DamageType,Rcs_dbsm,Range_km,ShutdownSpeed_mps,SensorClass1,SensorClass2,Range_km[1],Alt_m[1],AltMode[1],GuidanceMode[1],Range_km[2],Alt_m[2],AltMode[2],GuidanceMode[2],Range_km[3],Alt_m[3],AltMode[3],GuidanceMode[3],Range_km[4],Alt_m[4],AltMode[4],GuidanceMode[4],Range_km[5],Alt_m[5],AltMode[5],GuidanceMode[5],Range_km[6],Alt_m[6],AltMode[6],GuidanceMode[6],Range_km[7],Alt_m[7],AltMode[7],GuidanceMode[7],Range_km[8],Alt_m[8],AltMode[8],GuidanceMode[8],TargetFlags ! ASM-I,5,64,NONE,am39,No description is available.,100.000000,0.010000,20.000000,15.000000,0.200000,0.400000,0.300000,0.900000,1.100000,0.100000,50000.000000,20.000000,20000.000000,120.000000,100.000000,0,10.000000,180.000000,200.000000,ASM Seeker,none,20.000000,15000.000000,0,1,9.000000,5000.000000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,1 ! AAM-I,5,64,NONE,aim9b,No description is available.,100.000000,0.010000,20.000000,15.000000,0.100000,0.190000,0.125000,0.900000,1.100000,0.100000,80000.000000,5.000000,50000.000000,55.000000,100.000000,0,0.000000,60.000000,200.000000,AAM Seeker,none,30.000000,15000.000000,0,2,9.000000,5000.000000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,2 ! SAM-I,5,64,NONE,roland_sam,No description is available.,80.000000,0.003000,20.000000,15.000000,0.150000,0.200000,0.150000,0.900000,1.100000,0.100000,100000.000000,10.000000,80000.000000,60.000000,100.000000,0,10.000000,120.000000,400.000000,SAM Seeker,none,0.000000,10000.000000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 ! SSM-I,5,64,NONE,mm38,No description is available.,80.000000,0.010000,20.000000,15.000000,0.100000,0.180000,0.130000,0.900000,1.100000,0.100000,45000.000000,300.000000,10000.000000,20.000000,100.000000,0,0.000000,150.000000,150.000000,SSM Seeker,none,20.000000,300.000000,0,1,5.000000,100.000000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,1 --- 1,6 ---- Database class,Model class id,Functional class id,ImageFileName,3DModelFileName,Description,Mass_kg,DragArea_sm,Gmax,MaxTurnRate_degps,Cdpsub,Cdptran,Cdpsup,Mcm,Msupm,Kdi,BoostThrust_N,BoostTime_s,SustThrust_N,SustTime_s,Damage,DamageType,Rcs_dbsm,Range_km,ShutdownSpeed_mps,SensorClass1,SensorClass2,Range_km[1],Alt_m[1],AltMode[1],GuidanceMode[1],Range_km[2],Alt_m[2],AltMode[2],GuidanceMode[2],Range_km[3],Alt_m[3],AltMode[3],GuidanceMode[3],Range_km[4],Alt_m[4],AltMode[4],GuidanceMode[4],Range_km[5],Alt_m[5],AltMode[5],GuidanceMode[5],Range_km[6],Alt_m[6],AltMode[6],GuidanceMode[6],Range_km[7],Alt_m[7],AltMode[7],GuidanceMode[7],Range_km[8],Alt_m[8],AltMode[8],GuidanceMode[8],TargetFlags ! ASM-I,5,64,NONE,am39,No description is available.,100,0.01,20,15,0.2,0.4,0.3,0.9,1.1,0.1,50000,20,20000,120,100,0,10,180,200,ASM Seeker,none,20,15000,0,1,9,5000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,1 ! AAM-I,5,64,NONE,aim9b,No description is available.,100,0.01,20,15,0.1,0.19,0.125,0.9,1.1,0.1,80000,5,50000,55,100,0,0,60,200,AAM Seeker,none,30,15000,0,2,9,5000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,2 ! SAM-I,5,64,NONE,roland_sam,No description is available.,80,0.003,20,15,0.15,0.2,0.15,0.9,1.1,0.1,100000,10,80000,60,100,0,10,120,400,SAM Seeker,none,0,10000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 ! SSM-I,5,64,NONE,mm38,No description is available.,80,0.01,20,15,0.1,0.18,0.13,0.9,1.1,0.1,45000,300,10000,20,100,0,0,150,150,SSM Seeker,none,20,300,0,1,5,100,2,2,,,,,,,,,,,,,,,,,,,,,,,,,1 ! AAM-SR,5,64,NONE,aim9b,Short range air-to-air generic,100,0.01,20,15,0.1,0.19,0.125,0.9,1.1,0.1,80000,5,50000,20,100,0,0,60,200,AAM Seeker,none,0,5000,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2 |
From: <ddc...@us...> - 2004-01-01 23:46:50
|
Update of /cvsroot/gcblue/gcb_wx/include/scriptinterface In directory sc8-pr-cvs1:/tmp/cvs-serv6686/include/scriptinterface Modified Files: tcScenarioInterface.h Log Message: more briefing and scenario generation features Index: tcScenarioInterface.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/scriptinterface/tcScenarioInterface.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tcScenarioInterface.h 31 Dec 2003 17:34:10 -0000 1.5 --- tcScenarioInterface.h 1 Jan 2004 23:44:46 -0000 1.6 *************** *** 66,70 **** void AddOrder(tcOrder order); ! void SetDatum(double lon_deg, double lat_deg, float alt_m); }; /** --- 66,72 ---- void AddOrder(tcOrder order); ! void ClearOrders(); ! void SetPosition(double lon_deg, double lat_deg, float alt_m); ! bool Validate(); }; /** *************** *** 109,115 **** void MapText(std::string text, double lon_deg, double lat_deg, double duration, int effect); ! // camera events void FlybyCamera(std::string unitName, double duration, float az1_deg, float az2_deg, float el1_deg, float el2_deg, float r1_m, float r2_m); // goal class creation methods (cannot find a way to do directly) --- 111,120 ---- void MapText(std::string text, double lon_deg, double lat_deg, double duration, int effect); ! // camera and 3D events void FlybyCamera(std::string unitName, double duration, float az1_deg, float az2_deg, float el1_deg, float el2_deg, float r1_m, float r2_m); + void TrackCamera(std::string unitName, double duration, float x1, float x2, + float y1, float y2, float z1, float z2); + void Text3D(std::string text, double duration, float x, float y, float size, int effect); // goal class creation methods (cannot find a way to do directly) |
From: <ddc...@us...> - 2004-01-01 23:46:47
|
Update of /cvsroot/gcblue/gcb_wx/src/scriptinterface In directory sc8-pr-cvs1:/tmp/cvs-serv6686/src/scriptinterface Modified Files: tcScenarioInterface.cpp Log Message: more briefing and scenario generation features Index: tcScenarioInterface.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/scriptinterface/tcScenarioInterface.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** tcScenarioInterface.cpp 31 Dec 2003 17:34:10 -0000 1.6 --- tcScenarioInterface.cpp 1 Jan 2004 23:44:47 -0000 1.7 *************** *** 56,60 **** } ! void tcScenarioUnit::SetDatum(double lon_deg, double lat_deg, float alt_m) { lon = lon_deg; --- 56,65 ---- } ! void tcScenarioUnit::ClearOrders() ! { ! orders.clear(); ! } ! ! void tcScenarioUnit::SetPosition(double lon_deg, double lat_deg, float alt_m) { lon = lon_deg; *************** *** 63,66 **** --- 68,92 ---- } + /** + * Test that fields are valid. Display message box if not. + * @return true if validation okay + */ + bool tcScenarioUnit::Validate() + { + if (className == "Not defined") + { + wxMessageBox("Scenario unit class not defined","Error",wxICON_ERROR); + return false; + } + if (unitName == "Not defined") + { + wxString s = wxString::Format("Scenario unit name not defined (class: %s)",className.c_str()); + wxMessageBox(s.c_str(),"Error",wxICON_ERROR); + return false; + } + return true; + + } + tcDirector* tcScenarioInterface::director = NULL; tcMapData* tcScenarioInterface::mapData = NULL; *************** *** 93,97 **** .def_readwrite("speed",&tcScenarioUnit::speed) .def("AddOrder",&tcScenarioUnit::AddOrder) ! .def("SetDatum",&tcScenarioUnit::SetDatum) ; --- 119,124 ---- .def_readwrite("speed",&tcScenarioUnit::speed) .def("AddOrder",&tcScenarioUnit::AddOrder) ! .def("ClearOrders",&tcScenarioUnit::ClearOrders) ! .def("SetPosition",&tcScenarioUnit::SetPosition) ; *************** *** 128,131 **** --- 155,160 ---- // camera and 3D viewer events .def("FlybyCamera",&tcScenarioInterface::FlybyCamera) + .def("TrackCamera",&tcScenarioInterface::TrackCamera) + .def("Text3D",&tcScenarioInterface::Text3D) // goal creation workaround .def("CompoundGoal",&tcScenarioInterface::CompoundGoal) *************** *** 140,143 **** --- 169,174 ---- bool tcScenarioInterface::AddUnitToAlliance(tcScenarioUnit unit, int alliance) { + if (!unit.Validate()) return false; + tcDatabaseObject *dbObj = simState->mpDatabase->GetObject(unit.className); if (dbObj == NULL) *************** *** 439,442 **** --- 470,500 ---- C_PIOVER180*el1_deg, C_PIOVER180*el2_deg, r1_m, r2_m)); + } + + void tcScenarioInterface::TrackCamera(std::string unitName, double duration, float x1, float x2, + float y1, float y2, float z1, float z2) + { + wxASSERT(director); + + // repeated code from HookPlatform, refactor this + wxASSERT(simState); + tcGameObject* obj = simState->GetObjectByName(unitName); + if (obj == NULL) + { + std::cerr << "TrackCamera: Object not found (" + << unitName << ")\n"; + return; + } + director->AddEvent(new tcTrackCameraEvent(eventTime, eventTime+duration, obj->mnID, + x1, x2, y1, y2, z1, z2)); + } + + void tcScenarioInterface::Text3D(std::string text, double duration, + float x, float y, float size, int effect) + { + wxASSERT(director); + + director->AddEvent(new tc3DTextEvent(text, eventTime, eventTime+duration, + x, y, size, effect)); } |
From: <ddc...@us...> - 2004-01-01 23:46:36
|
Update of /cvsroot/gcblue/gcb_wx/src/sim In directory sc8-pr-cvs1:/tmp/cvs-serv6686/src/sim Modified Files: tc3DViewer.cpp tcDirector.cpp tcDirectorEvent.cpp tcScenarioSelectView.cpp tcSimState.cpp Log Message: more briefing and scenario generation features Index: tc3DViewer.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tc3DViewer.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** tc3DViewer.cpp 31 Dec 2003 00:23:23 -0000 1.22 --- tc3DViewer.cpp 1 Jan 2004 23:44:47 -0000 1.23 *************** *** 103,106 **** --- 103,110 ---- } + /** + * Need to generalize this to handle different types of camera + * moves. + */ void tc3DViewer::OnLButtonDown(wxMouseEvent& event) { *************** *** 110,113 **** --- 114,118 ---- azStart = cameraAz; elStart = cameraEl; + usePolarOffset = true; } *************** *** 225,228 **** --- 230,239 ---- } + void tc3DViewer::SetCartesianOffset(float x, float y, float z) + { + cameraPositionOffset.set(x, y, z); + usePolarOffset = false; + } + void tc3DViewer::SetGameTime(double t) { *************** *** 247,255 **** } ! void tc3DViewer::SetMoveWithVector(float az, float el, float range) { cameraAz = az; cameraEl = el; cameraRange = range; } --- 258,267 ---- } ! void tc3DViewer::SetPolarOffset(float az, float el, float range) { cameraAz = az; cameraEl = el; cameraRange = range; + usePolarOffset = true; } *************** *** 308,311 **** --- 320,337 ---- + /** + * Adds text drawable to textGeode. Take care with reference count + * issues with doing it this way. + */ + void tc3DViewer::AddText(osgText::Text *text) + { + textGeode->addDrawable(text); + } + + + void tc3DViewer::RemoveText(osgText::Text *text) + { + textGeode->removeDrawable(text); + } void tc3DViewer::CreateScene() *************** *** 472,479 **** if (moveWithTarget) { ! float camx = cosf(cameraEl)*sinf(cameraAz); ! float camy = cosf(cameraEl)*cosf(cameraAz); ! float camz = sinf(cameraEl); ! Producer::Vec3 camOffset = Producer::Vec3(camx,camy,camz)*cameraRange; Producer::Matrix m = Producer::Matrix::translate(camOffset); cameraPosition = targetPosition*m; --- 498,513 ---- if (moveWithTarget) { ! Producer::Vec3 camOffset; ! if (usePolarOffset) ! { ! float camx = cosf(cameraEl)*sinf(cameraAz); ! float camy = cosf(cameraEl)*cosf(cameraAz); ! float camz = sinf(cameraEl); ! camOffset = Producer::Vec3(camx,camy,camz)*cameraRange; ! } ! else ! { ! camOffset = cameraPositionOffset; ! } Producer::Matrix m = Producer::Matrix::translate(camOffset); cameraPosition = targetPosition*m; *************** *** 842,845 **** --- 876,880 ---- moveWithTarget = true; lookAtTarget = true; + usePolarOffset = true; cameraLongitude = 0; cameraLatitude = 0; Index: tcDirector.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcDirector.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tcDirector.cpp 31 Dec 2003 17:34:10 -0000 1.4 --- tcDirector.cpp 1 Jan 2004 23:44:47 -0000 1.5 *************** *** 80,98 **** AddEvent(new tcConsoleTextEvent("Engage enemy to the Northwest",5)); ! AddEvent(new tcMapViewEvent(mapView, 9, -5.9, 49.5, 4.0)); ! AddEvent(new tcSoundEffectEvent(9,SEFFECT_THUCK)); ! AddEvent(new tcMapTextEvent(mapView,"OPFOR",9.0,25.0f,-6.0, 49.9,1)); AddEvent(new tcConsoleTextEvent("",12)); ! AddEvent(new tcConsoleTextEvent("Enemy is believed to be a medium sized task force",16)); ! AddEvent(new tcConsoleTextEvent("similar in makeup to your own.",16)); ! AddEvent(new tcConsoleTextEvent("",20)); ! AddEvent(new tcConsoleTextEvent("Extreme caution is advised",20)); ! AddEvent(new tcConsoleTextEvent("",22)); ! AddEvent(new tcConsoleTextEvent("Good hunting",22)); ! AddEvent(new tcGameCommandEvent(ID_SETPAUSE, 25 , 0)); ! AddEvent(new tcGameCommandEvent(ID_SETBRIEFING, 25, 0)); ! AddEvent(new tcGameCommandEvent(ID_SET3D, 25, 1)); // deactivate 3D window //AddEvent(new tcMapViewEvent(mapView, 24, -5.9, 49.5, 4.0)); } --- 80,98 ---- AddEvent(new tcConsoleTextEvent("Engage enemy to the Northwest",5)); ! AddEvent(new tcMapViewEvent(mapView, 7, -5.9, 49.5, 4.0)); ! AddEvent(new tcSoundEffectEvent(7,SEFFECT_THUCK)); ! AddEvent(new tcMapTextEvent(mapView,"OPFOR",7.0,18.0f,-6.0, 49.9,1)); + AddEvent(new tcConsoleTextEvent("",9)); + AddEvent(new tcConsoleTextEvent("Enemy is believed to be a medium sized task force",9)); + AddEvent(new tcConsoleTextEvent("similar in makeup to your own.",9)); AddEvent(new tcConsoleTextEvent("",12)); ! AddEvent(new tcConsoleTextEvent("Extreme caution is advised",12)); ! AddEvent(new tcConsoleTextEvent("",13)); ! AddEvent(new tcConsoleTextEvent("Good hunting",13)); ! AddEvent(new tcGameCommandEvent(ID_SETPAUSE, 18 , 0)); ! AddEvent(new tcGameCommandEvent(ID_SETBRIEFING, 18, 0)); ! AddEvent(new tcGameCommandEvent(ID_SET3D, 18, 1)); // deactivate 3D window //AddEvent(new tcMapViewEvent(mapView, 24, -5.9, 49.5, 4.0)); } Index: tcDirectorEvent.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcDirectorEvent.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcDirectorEvent.cpp 31 Dec 2003 17:34:10 -0000 1.3 --- tcDirectorEvent.cpp 1 Jan 2004 23:44:47 -0000 1.4 *************** *** 36,39 **** --- 36,41 ---- #include "tc3DViewer.h" #include "math_constants.h" + #include <osgText/Text> + #include <osg/Vec3> // tc3DTextEvent using MapView::tcMapView; *************** *** 353,357 **** float range = startRange + k*(stopRange - startRange); ! viewer->SetMoveWithVector(az, el, range); } --- 355,359 ---- float range = startRange + k*(stopRange - startRange); ! viewer->SetPolarOffset(az, el, range); } *************** *** 375,377 **** tcFlybyCameraEvent::~tcFlybyCameraEvent() { ! } \ No newline at end of file --- 377,496 ---- tcFlybyCameraEvent::~tcFlybyCameraEvent() { ! } ! ! /********** tcTrackCameraEvent *****************/ ! void tcTrackCameraEvent::Update(double t) ! { ! tcCameraEvent::Update(t); ! ! if (!triggered) return; ! if (t > eventStop) return; ! ! float k = (eventStart == eventStop) ? 0 : (t - eventStart)/(eventStop - eventStart); ! float x = startX + k*(stopX - startX); ! float y = startY + k*(stopY - startY); ! float z = startZ + k*(stopZ - startZ); ! ! viewer->SetCartesianOffset(x, y, z); ! } ! ! tcTrackCameraEvent::tcTrackCameraEvent(double tStart, double tStop, long targID, ! float x1, float x2, float y1, float y2, float z1, float z2 ) ! : tcCameraEvent(tStart,tStop) ! { ! targetID = targID; ! moveWithTarget = true; ! lookAtTarget = true; ! ! startX = x1; ! startY = y1; ! startZ = z1; ! stopX = x2; ! stopY = y2; ! stopZ = z2; ! } ! ! tcTrackCameraEvent::~tcTrackCameraEvent() ! { ! } ! ! /******** tc3DTextEvent *************/ ! ! void tc3DTextEvent::Update(double t) ! { ! if (t >= eventStop) ! { ! if (unsigned nParents = viewerText->getNumParents()) ! { ! wxASSERT(nParents == 1); ! viewer->RemoveText(viewerText.get()); ! } ! return; ! } ! else if (t >= eventStart) ! { ! if (viewerText->getNumParents() == 0) ! { ! wxSize viewerSize = viewer->GetSize(); ! float x = textx * (float)viewerSize.GetWidth(); ! float y = texty * (float)viewerSize.GetHeight(); ! viewerText->setPosition(osg::Vec3(x,y,0.0f)); ! viewer->AddText(viewerText.get()); ! } ! if (effectCode == 1) // alpha blend ! { ! double tspan = eventStop - eventStart; ! double dt = t - eventStart; ! double tfract = (tspan != 0) ? dt/tspan : 1.0f; // fraction of active time span ! double alpha; ! ! const float a = 0.2; ! const float ainv = 1.0/a; ! ! if (tfract < a) ! alpha = ainv*tfract; ! else if (tfract > (1.0f-a)) ! alpha = ainv*(1-tfract); ! else ! alpha = 1.0; ! ! viewerText->setColor(osg::Vec4(1.0f,1.0f,1.0f,alpha)); ! } ! ! } ! } ! ! /** ! * x and y are normalized to screen width and height, e.g. 0.5, 0.5 is center of ! * screen. ! */ ! tc3DTextEvent::tc3DTextEvent(std::string text, double startTime, double endTime, ! float x, float y, float size, int effect) ! : tcCameraEvent(startTime, endTime) ! { ! theText = text; ! fontSize = size; ! textx = x; ! texty = y; ! effectCode = effect; ! ! viewerText = new osgText::Text; ! osgText::Font* font = osgText::readFontFile("fonts/arial.ttf"); ! osg::Vec4 layoutColor(1.0f,1.0f,1.0f,1.0f); ! ! viewerText->setFont(font); ! viewerText->setColor(layoutColor); ! viewerText->setCharacterSize(fontSize, 1.2f); // font height, aspect ratio ! viewerText->setPosition(osg::Vec3(40,40,0.0f)); ! viewerText->setLayout(osgText::Text::LEFT_TO_RIGHT); ! viewerText->setFontResolution(32,32); ! viewerText->setText(theText.c_str()); ! } ! ! /** ! * viewerText automatically deleted via ref_ptr ! */ ! tc3DTextEvent::~tc3DTextEvent() ! { ! } ! Index: tcScenarioSelectView.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcScenarioSelectView.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** tcScenarioSelectView.cpp 29 Dec 2003 01:10:25 -0000 1.11 --- tcScenarioSelectView.cpp 1 Jan 2004 23:44:47 -0000 1.12 *************** *** 350,353 **** --- 350,360 ---- path += caption->GetBuffer(); mpSimState->mpPythonInterface->LoadScenario(path.c_str(),caption->GetBuffer()); + if (!mpSimState->msScenarioInfo.mbLoaded) + { + wxString s = + wxString::Format("Error in scenario %s. Check pyerr.txt for details.", + path.c_str()); + wxMessageBox(s.c_str(),"Error",wxICON_ERROR); + } } } Index: tcSimState.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcSimState.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** tcSimState.cpp 29 Dec 2003 01:10:25 -0000 1.19 --- tcSimState.cpp 1 Jan 2004 23:44:47 -0000 1.20 *************** *** 1395,1402 **** tnPoolIndex nKey; - maPlatformState.GetNextAssoc(pos,nKey,obj); for (unsigned i=0;i<nSize;i++) { maPlatformState.GetNextAssoc(pos,nKey,obj); if (unitName == obj->mzUnit.mz) { --- 1395,1402 ---- tnPoolIndex nKey; for (unsigned i=0;i<nSize;i++) { maPlatformState.GetNextAssoc(pos,nKey,obj); + wxASSERT(obj); if (unitName == obj->mzUnit.mz) { *************** *** 1461,1465 **** tnPoolIndex nKey; ! int k = rand() % nSize; maPlatformState.GetNextAssoc(cmappos,nKey,pplat); for (int i=0;i<k;i++) { --- 1461,1465 ---- tnPoolIndex nKey; ! int k = rand() % nSize; // k [0,nSize-1] maPlatformState.GetNextAssoc(cmappos,nKey,pplat); for (int i=0;i<k;i++) { |
From: <ddc...@us...> - 2004-01-01 23:46:31
|
Update of /cvsroot/gcblue/gcb_wx/include/sim In directory sc8-pr-cvs1:/tmp/cvs-serv6686/include/sim Modified Files: tc3DViewer.h tcDirectorEvent.h Log Message: more briefing and scenario generation features Index: tc3DViewer.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/sim/tc3DViewer.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** tc3DViewer.h 31 Dec 2003 00:23:22 -0000 1.16 --- tc3DViewer.h 1 Jan 2004 23:44:46 -0000 1.17 *************** *** 66,70 **** osg::ref_ptr<osgProducer::OsgCameraGroup> camera_group; osg::ref_ptr<osg::NodeVisitor> updateVisitor; ! osg::ref_ptr<osgText::Text> viewerText; osg::ref_ptr<osg::MatrixTransform> hudObjects; ///< add HUD objects to this transform osg::ref_ptr<osg::Projection> orthoProjection; ///< ortho projection for HUD objects --- 66,70 ---- osg::ref_ptr<osgProducer::OsgCameraGroup> camera_group; osg::ref_ptr<osg::NodeVisitor> updateVisitor; ! osg::ref_ptr<osgText::Text> viewerText; ///< text for debug/basic viewer info display osg::ref_ptr<osg::MatrixTransform> hudObjects; ///< add HUD objects to this transform osg::ref_ptr<osg::Projection> orthoProjection; ///< ortho projection for HUD objects *************** *** 98,101 **** --- 98,103 ---- void SkipMouseEvent(wxMouseEvent& event); ///< adjusts position to parent frame + void AddText(osgText::Text *text); + void RemoveText(osgText::Text *text); void CreateScene(); void CreateSky(); *************** *** 113,117 **** void SetHookID(long id) {hookID = id;} void SetLook(float az, float el); ! void SetMoveWithVector(float az, float el, float range); void SetText(const char *s); void ToggleFog(); --- 115,120 ---- void SetHookID(long id) {hookID = id;} void SetLook(float az, float el); ! void SetCartesianOffset(float x, float y, float z); ! void SetPolarOffset(float az, float el, float range); void SetText(const char *s); void ToggleFog(); *************** *** 149,156 **** --- 152,161 ---- bool lookAtTarget; ///< true to make camera point at target bool moveWithTarget; ///< true to make camera move with target + bool usePolarOffset; ///< uses cameraAz, cameraEl, cameraRange for moveWith if true, otherwise use cameraPositionOffset double cameraLongitude; ///< lon,lat,alt pos of camera for non moveWith modes double cameraLatitude; ///< radians float cameraAltitude; ///< meters Producer::Vec3 cameraPosition; ///< current position of camera + Producer::Vec3 cameraPositionOffset; ///< current position offset of camera rel to target, for moveWith Producer::Vec3 cameraTarget; ///< point camera is looking at for lookAt modes float cameraAz; ///< camera azimuth relative to target for moveWith modes Index: tcDirectorEvent.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/sim/tcDirectorEvent.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcDirectorEvent.h 31 Dec 2003 17:34:10 -0000 1.3 --- tcDirectorEvent.h 1 Jan 2004 23:44:46 -0000 1.4 *************** *** 30,33 **** --- 30,35 ---- #include <string> #include <Producer/Math> + #include <osg/ref_ptr> + //#include <osgText/Text> // for tc3DTextEvent class tcMapObject; *************** *** 42,45 **** --- 44,57 ---- class tc3DViewer; + namespace osg + { + class ref_ptr; + } + + namespace osgText + { + class Text; + } + using MapView::tcMapView; /** *************** *** 204,207 **** --- 216,223 ---- }; + /** + * A camera that is locked to a target with az/el/range that + * can change over the camera move. Name is not the best. + */ class tcFlybyCameraEvent : public tcCameraEvent { *************** *** 221,224 **** --- 237,282 ---- }; + /** + * Camera that moves in (x,y,z) relative to target. Same as + * FlybyCamera otherwise. + */ + class tcTrackCameraEvent : public tcCameraEvent + { + public: + float startX; + float startY; + float startZ; + float stopX; + float stopY; + float stopZ; + + virtual void Update(double t); + + tcTrackCameraEvent(double tStart, double tStop, long targID, + float x1, float x2, float y1, float y2, float z1, float z2 ); + virtual ~tcTrackCameraEvent(); + }; + + /** + * Adds to viewer and maintains an osgText::Text object to + * display 3D text effects for briefing. + */ + class tc3DTextEvent : public tcCameraEvent + { + public: + std::string theText; + float fontSize; + float textx, texty; ///< normalized text coordinates + int effectCode; + + virtual void Update(double t); + + tc3DTextEvent(std::string text, double startTime, double endTime, + float x, float y, float size, int effect); + virtual ~tc3DTextEvent(); + + protected: + osg::ref_ptr<osgText::Text> viewerText; + }; #endif |
From: <ddc...@us...> - 2004-01-01 23:41:32
|
Update of /cvsroot/gcblue/gcb_data/images In directory sc8-pr-cvs1:/tmp/cvs-serv5934/images Modified Files: start_background.jpg Log Message: Index: start_background.jpg =================================================================== RCS file: /cvsroot/gcblue/gcb_data/images/start_background.jpg,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsmivpEy and /tmp/cvseuDYRW differ |
From: <ddc...@us...> - 2004-01-01 23:41:23
|
Update of /cvsroot/gcblue/gcb_data/scenario In directory sc8-pr-cvs1:/tmp/cvs-serv5934/scenario Added Files: FourOnFourAir.py SurfAir.py Removed Files: Test1.txt TestScenarioA.txt Log Message: --- NEW FILE: FourOnFourAir.py --- # SM is ScenarioManager object def CreateScenario(SM): SM.CreateAlliance(1, 'Friendly') SM.CreateAlliance(2, 'OPFOR') SM.SetUserAlliance(1) SM.SetScenarioDescription('A test scenario with 4 generic aircraft on each side') SM.SetScenarioLoaded(1) SM.SetScenarioName('Test Scenario A') SM.SetDateTime(2004, 4, 15, 17, 0, 0) unit = SM.GetDefaultUnit() order = SM.GetDefaultOrder() order.SetOrderName('Patrol') unit.AddOrder(order) nAir = 4 for n in range(0, nAir): ### Add Alliance 1 aircraft unit = SM.GetDefaultUnit() unit.className = 'Generic aircraft' unitName = 'Tiger %d' % n unit.unitName = unitName unit.lat = 49.8 + 0.025*n unit.lon = -4.5 unit.alt = 1500 unit.heading = 270 unit.speed = 0.7 SM.AddUnitToAlliance(unit, 1) ### Add Alliance 2 aircraft unit = SM.GetDefaultUnit() order = SM.GetDefaultOrder() order.SetOrderName('Patrol') unit.AddOrder(order) unit.className = 'Generic aircraft' unitName = 'Bear %d' % n unit.unitName = unitName unit.lat = 50 + 0.08*n unit.lon = -5.5 + 0.025*n unit.alt = 1500 unit.heading = 90 unit.speed = 0.7 SM.AddUnitToAlliance(unit, 2) # add goals AddGoals(SM) def AddGoals(SM): # alliance 1 goals goal_1a = SM.DestroyGoal('Bear 1') goal_1b = SM.DestroyGoal('Bear 2') goal_1 = SM.CompoundGoal(0) # 0 - AND, 1 - OR goal_1.AddGoal(goal_1a) goal_1.AddGoal(goal_1b) SM.SetAllianceGoal(1, goal_1) # alliance 2 goals goal_2 = SM.DestroyGoal('Tiger 1') SM.SetAllianceGoal(2, goal_2) # BM is BriefingManager (same as ScenarioManager for now) object def CreateBriefing(BM): BM.SetEventTime(0) BM.Pause() BM.PauseAudio() BM.SetBriefingMode(1) # 0 - normal tactical display, 1 - briefing disp BM.Set3DMode(0) # 0 - off, 1 - small, 2 - med, 3 - full screen BM.ConsoleText('Test of the briefing system follows...') BM.SetEventTime(4) BM.ConsoleText('') # a blank line BM.ConsoleText('Destroy the aircraft to the Northwest') BM.ConsoleText('Protect Tiger 1') BM.ConsoleText('') BM.ConsoleText('Zooming map...') BM.SetEventTime(7) BM.ChangeMapView(-5.5, 50.1, 4.0) # (lon, lat, lon span) in degrees BM.SetEventTime(8) BM.ConsoleText('') BM.ConsoleText('Text can be displayed on the map like this') BM.SetEventTime(9) # text, lon, lat, duration in seconds, 0 - no effect, 1 - blend effect BM.MapText('Here is where the enemy is', -5.5, 50.1, 12, 1) BM.SetEventTime(10) BM.MapText('These are your forces', -4.5, 49.8, 10, 1) BM.SetEventTime(12) BM.HookPlatform('Tiger 1') BM.ConsoleText('3D camera moves can be scripted') BM.SetEventTime(16) BM.Set3DMode(2) # large 3D, console still visible # unit, duration, az1, az2, el1, el2, range1, range2 BM.ConsoleText('') BM.ConsoleText('This is a slow rotation view'); BM.FlybyCamera('Tiger 1', 10.0, 120, 180, 5, 5, 55, 50) # text, duration, x, y, font size, effect BM.Text3D('Tiger 1', 10.0, 0.5, 0.5, 32.0, 1) BM.SetEventTime(27) BM.ConsoleText('') BM.ConsoleText('This is a zoom out'); BM.FlybyCamera('Tiger 1', 10.0, 180, 180, 5, 5, 50, 200) BM.SetEventTime(37) BM.Set3DMode(1) BM.ConsoleText('') BM.ConsoleText('On to the mission, Good hunting.') BM.SetEventTime(40) BM.Set3DMode(1) BM.SetBriefingMode(0) # leave briefing mode BM.PlayAudio('tension1',0) # name, seek time from beginning of song BM.Resume() # resumes game --- NEW FILE: SurfAir.py --- # SM is ScenarioManager object def CreateScenario(SM): SM.CreateAlliance(1, 'Friendly') SM.CreateAlliance(2, 'OPFOR') SM.SetUserAlliance(1) SM.SetScenarioDescription('Test scenario, surface and air on each side') SM.SetScenarioLoaded(1) SM.SetScenarioName('SurfAir') SM.SetDateTime(2004, 4, 15, 17, 0, 0) unit = SM.GetDefaultUnit() order = SM.GetDefaultOrder() order.SetOrderName('Patrol') unit.AddOrder(order) ### Alliance 2 (enemy) units unit.className = 'Mig25' unit.unitName = 'Bear 72' unit.SetPosition(-5.5, 49.9, 1500) # lon, lat, alt unit.heading = 90 unit.speed = 0.7 SM.AddUnitToAlliance(unit, 2) unit.className = 'Mig25' unit.unitName = 'Bear 73' unit.SetPosition(-5.5, 49.85, 1500) # lon, lat, alt unit.heading = 90 unit.speed = 0.7 SM.AddUnitToAlliance(unit, 2) unit.className = 'Destroyer' unit.unitName = 'Plate 12' unit.SetPosition(-5.6, 49.9, 0) unit.heading = 95 unit.speed = 1.0 SM.AddUnitToAlliance(unit, 2) ### Alliance 1 units (friendly) unit.ClearOrders() unit.className = 'Mig25' unit.unitName = 'Laser 1' unit.SetPosition(-4.4, 49.8, 1500) unit.heading = 270 unit.speed = 0.7 SM.AddUnitToAlliance(unit, 1) unit.className = 'Harrier GR3a' unit.unitName = 'Striker 1' unit.SetPosition(-4.25, 49.7, 1200) unit.heading = 340 unit.speed = 0.5 SM.AddUnitToAlliance(unit, 1) unit.className = 'Cruiser' unit.unitName = 'Grizzly 1' unit.SetPosition(-4.3, 49.7, 0) unit.heading = 260 unit.speed = 1.0 SM.AddUnitToAlliance(unit, 1) AddGoals(SM) def AddGoals(SM): # alliance 1 goals goal_1a = SM.DestroyGoal('Plate 12') goal_1b = SM.DestroyGoal('Bear 72') goal_1 = SM.CompoundGoal(0) # 0 - AND, 1 - OR goal_1.AddGoal(goal_1a) goal_1.AddGoal(goal_1b) SM.SetAllianceGoal(1, goal_1) # alliance 2 goals goal_2 = SM.DestroyGoal('Laser 1') SM.SetAllianceGoal(2, goal_2) # BM is BriefingManager (same as ScenarioManager for now) object def CreateBriefing(BM): BM.SetEventTime(0) BM.Pause() BM.PauseAudio() BM.SetBriefingMode(1) # 0 - normal tactical display, 1 - briefing disp BM.Set3DMode(0) # 0 - off, 1 - small, 2 - med, 3 - full screen BM.ConsoleText('Briefing follows...') BM.SetEventTime(4) BM.ConsoleText('') # a blank line BM.ConsoleText('Destroy the forces to the Northwest') BM.ConsoleText('Protect your forces') BM.ConsoleText('') BM.SetEventTime(7) BM.ChangeMapView(-5.5, 50.1, 4.0) # (lon, lat, lon span) in degrees BM.SetEventTime(8) BM.ConsoleText('') BM.ConsoleText('Enemy consists of one Destroyer and two Mig25s') BM.SetEventTime(9) # text, lon, lat, duration in seconds, 0 - no effect, 1 - blend effect BM.MapText('Approx location of OPFOR', -5.5, 49.9, 12, 1) BM.SetEventTime(12) BM.Set3DMode(2) # large 3D, console still visible # unit, duration, az1, az2, el1, el2, range1, range2 BM.ConsoleText('') BM.ConsoleText('Your cruiser is armed with SAMs and SSMs'); BM.TrackCamera('Grizzly 1', 10.0, 100.0, -100.0, 1500.0, -50.0, 150.0, 100.0) BM.Text3D('CRUISER', 10.0, 0.7, 0.5, 24.0, 1) BM.SetEventTime(22) BM.ConsoleText('') BM.ConsoleText('Use your Mig to defeat the enemy fighters') BM.ConsoleText('The 4 key will active afterburners') BM.FlybyCamera('Laser 1', 4.0, 80, 120, 15, 5, 50, 65) BM.Text3D('MIG25', 4.0, 0.7, 0.5, 24.0, 1) BM.SetEventTime(26) BM.ConsoleText('') BM.ConsoleText('Your Harrier provides strike support to take out the destroyer.') BM.FlybyCamera('Striker 1', 5.0, 80, 120, 15, 5, 50, 65) BM.Text3D('HARRIER', 5.0, 0.7, 0.5, 24.0, 1) BM.SetEventTime(31) BM.Set3DMode(1) BM.ConsoleText('') BM.ConsoleText('On to the mission, Good hunting.') BM.SetEventTime(34) BM.Set3DMode(1) BM.SetBriefingMode(0) # leave briefing mode BM.PlayAudio('tension1',0) # name, seek time from beginning of song BM.Resume() # resumes game --- Test1.txt DELETED --- --- TestScenarioA.txt DELETED --- |
From: <ddc...@us...> - 2003-12-31 17:34:13
|
Update of /cvsroot/gcblue/gcb_wx/src/scriptinterface In directory sc8-pr-cvs1:/tmp/cvs-serv30143/src/scriptinterface Modified Files: tcScenarioInterface.cpp Log Message: FlybyCamera event Index: tcScenarioInterface.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/scriptinterface/tcScenarioInterface.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tcScenarioInterface.cpp 29 Dec 2003 01:10:25 -0000 1.5 --- tcScenarioInterface.cpp 31 Dec 2003 17:34:10 -0000 1.6 *************** *** 126,129 **** --- 126,131 ---- .def("ConsoleText",&tcScenarioInterface::ConsoleText) .def("MapText",&tcScenarioInterface::MapText) + // camera and 3D viewer events + .def("FlybyCamera",&tcScenarioInterface::FlybyCamera) // goal creation workaround .def("CompoundGoal",&tcScenarioInterface::CompoundGoal) *************** *** 416,419 **** --- 418,442 ---- director->AddEvent(new tcMapTextEvent(mapView,text,eventTime,eventTime+duration, lon_deg, lat_deg, effect)); + } + + void tcScenarioInterface::FlybyCamera(std::string unitName, double duration, + float az1_deg, float az2_deg, + float el1_deg, float el2_deg, float r1_m, float r2_m) + { + wxASSERT(director); + + // repeated code from HookPlatform, refactor this + wxASSERT(simState); + tcGameObject* obj = simState->GetObjectByName(unitName); + if (obj == NULL) + { + std::cerr << "FlybyCamera: Object not found (" + << unitName << ")\n"; + return; + } + director->AddEvent(new tcFlybyCameraEvent(eventTime, eventTime+duration, obj->mnID, + C_PIOVER180*az1_deg, C_PIOVER180*az2_deg, + C_PIOVER180*el1_deg, C_PIOVER180*el2_deg, + r1_m, r2_m)); } |
From: <ddc...@us...> - 2003-12-31 17:34:13
|
Update of /cvsroot/gcblue/gcb_wx/src/sim In directory sc8-pr-cvs1:/tmp/cvs-serv30143/src/sim Modified Files: tcDirector.cpp tcDirectorEvent.cpp Log Message: FlybyCamera event Index: tcDirector.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcDirector.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcDirector.cpp 31 Dec 2003 00:23:23 -0000 1.3 --- tcDirector.cpp 31 Dec 2003 17:34:10 -0000 1.4 *************** *** 114,117 **** --- 114,118 ---- tcConsoleTextEvent::AttachConsole(console); tcDirectorEvent::AttachEventHandler(win); + tcCameraEvent::AttachViewer(viewer); events.clear(); startTime = 0; Index: tcDirectorEvent.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcDirectorEvent.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** tcDirectorEvent.cpp 22 Dec 2003 02:32:37 -0000 1.2 --- tcDirectorEvent.cpp 31 Dec 2003 17:34:10 -0000 1.3 *************** *** 34,37 **** --- 34,39 ---- #include "tcSound.h" #include "tcConsole.h" + #include "tc3DViewer.h" + #include "math_constants.h" using MapView::tcMapView; *************** *** 78,120 **** - /********** tcCameraEvent ****************/ - - Producer::Vec3 tcCameraEvent::GetPosition(double lon_zero, double lat_zero, double t) - { - return cameraStartPosition; - } - - void tcCameraEvent::SetDatum(double lon_rad, double lat_rad) - { - longitudeDatum = lon_rad; - latitudeDatum = lat_rad; - } - - void tcCameraEvent::SetEndPosition(float x, float y, float z) - { - cameraEndPosition = Producer::Vec3(x,y,z); - } - - void tcCameraEvent::SetTargetPosition(float x, float y, float z) - { - cameraTargetPosition = Producer::Vec3(x,y,z); - } - - void tcCameraEvent::SetStartPosition(float x, float y, float z) - { - cameraStartPosition = Producer::Vec3(x,y,z); - } - - void tcCameraEvent::Update(double t) - { - } - - tcCameraEvent::tcCameraEvent() - { - } - tcCameraEvent::~tcCameraEvent() - { - } --- 80,84 ---- *************** *** 344,346 **** --- 308,377 ---- + /********** tcCameraEvent ****************/ + + tc3DViewer* tcCameraEvent::viewer = NULL; + + void tcCameraEvent::Update(double t) + { + if (t < eventStart) return; + if (triggered) return; + + viewer->SetCameraMode(lookAtTarget, moveWithTarget); + viewer->SetHookID(targetID); + + triggered = true; + } + tcCameraEvent::tcCameraEvent(double tStart, double tStop) + : tcDirectorEvent(tStart, tStop) + { + } + + tcCameraEvent::~tcCameraEvent() + { + } + + /********** tcFlybyCameraEvent *****************/ + void tcFlybyCameraEvent::Update(double t) + { + tcCameraEvent::Update(t); + + if (!triggered) return; + if (t > eventStop) return; + + float k = (eventStart == eventStop) ? 0 : (t - eventStart)/(eventStop - eventStart); + float daz = stopAz - startAz; + if (daz < -C_PI) daz += C_TWOPI; + else if (daz > C_PI) daz -= C_TWOPI; + float az = startAz + k*daz; + + float del = stopEl - startEl; + if (del < -C_PI) del += C_TWOPI; + else if (del > C_PI) del -= C_TWOPI; + float el = startEl + k*del; + + float range = startRange + k*(stopRange - startRange); + + viewer->SetMoveWithVector(az, el, range); + } + + tcFlybyCameraEvent::tcFlybyCameraEvent(double tStart, double tStop, long targID, + float az1, float az2, float el1, float el2, + float r1, float r2) + : tcCameraEvent(tStart,tStop) + { + targetID = targID; + moveWithTarget = true; + lookAtTarget = true; + + startAz = az1; + startEl = el1; + startRange = r1; + stopAz = az2; + stopEl = el2; + stopRange = r2; + } + + tcFlybyCameraEvent::~tcFlybyCameraEvent() + { + } \ No newline at end of file |
From: <ddc...@us...> - 2003-12-31 17:34:13
|
Update of /cvsroot/gcblue/gcb_wx/include/sim In directory sc8-pr-cvs1:/tmp/cvs-serv30143/include/sim Modified Files: tcDirectorEvent.h Log Message: FlybyCamera event Index: tcDirectorEvent.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/sim/tcDirectorEvent.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** tcDirectorEvent.h 22 Dec 2003 02:32:37 -0000 1.2 --- tcDirectorEvent.h 31 Dec 2003 17:34:10 -0000 1.3 *************** *** 40,43 **** --- 40,44 ---- class tcSound; class tcConsole; + class tc3DViewer; using MapView::tcMapView; *************** *** 81,109 **** - - /** - * An event that manipulates the camera in the 3D viewer - */ - class tcCameraEvent : public tcDirectorEvent - { - public: - double latitudeDatum; ///< radian reference for fixed camera - double longitudeDatum; ///< radian reference for fixed camera - Producer::Vec3 cameraStartPosition; ///< cartesian coord offset from datum, meters - Producer::Vec3 cameraEndPosition; ///< cartesian coord offset from datum, meters - Producer::Vec3 cameraTargetPosition; ///< cartesian coord offset from datum, meters - - Producer::Vec3 GetPosition(double lon_zero, double lat_zero, double t); - void SetDatum(double lon_rad, double lat_rad); - void SetEndPosition(float x, float y, float z); - void SetTargetPosition(float x, float y, float z); - void SetStartPosition(float x, float y, float z); - virtual void Update(double t); - tcCameraEvent(); - virtual ~tcCameraEvent(); - }; - - - /** * Displays text on map window, updates text properties --- 82,85 ---- *************** *** 209,212 **** --- 185,223 ---- + + /** + * An event that manipulates the camera in the 3D viewer + */ + class tcCameraEvent : public tcDirectorEvent + { + public: + static tc3DViewer *viewer; + long targetID; + bool moveWithTarget; + bool lookAtTarget; + + static void AttachViewer(tc3DViewer *v) {viewer = v;} + virtual void Update(double t); + + tcCameraEvent(double tStart, double tStop); + virtual ~tcCameraEvent(); + }; + + class tcFlybyCameraEvent : public tcCameraEvent + { + public: + float startAz; + float startEl; + float startRange; + float stopAz; + float stopEl; + float stopRange; + + virtual void Update(double t); + + tcFlybyCameraEvent(double tStart, double tStop, long targID, + float az1, float az2, float el1, float el2, float r1, float r2); + virtual ~tcFlybyCameraEvent(); + }; |
From: <ddc...@us...> - 2003-12-31 17:34:13
|
Update of /cvsroot/gcblue/gcb_wx/include/scriptinterface In directory sc8-pr-cvs1:/tmp/cvs-serv30143/include/scriptinterface Modified Files: tcScenarioInterface.h Log Message: FlybyCamera event Index: tcScenarioInterface.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/scriptinterface/tcScenarioInterface.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tcScenarioInterface.h 29 Dec 2003 01:10:25 -0000 1.4 --- tcScenarioInterface.h 31 Dec 2003 17:34:10 -0000 1.5 *************** *** 109,112 **** --- 109,116 ---- void MapText(std::string text, double lon_deg, double lat_deg, double duration, int effect); + // camera events + void FlybyCamera(std::string unitName, double duration, float az1_deg, float az2_deg, + float el1_deg, float el2_deg, float r1_m, float r2_m); + // goal class creation methods (cannot find a way to do directly) tcCompoundGoal CompoundGoal(int type); |
From: <ddc...@us...> - 2003-12-31 00:23:26
|
Update of /cvsroot/gcblue/gcb_wx/src/sim In directory sc8-pr-cvs1:/tmp/cvs-serv31613/src/sim Modified Files: Game.cpp tc3DViewer.cpp tcDirector.cpp Log Message: More camera views Index: Game.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/Game.cpp,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** Game.cpp 29 Dec 2003 01:10:25 -0000 1.45 --- Game.cpp 31 Dec 2003 00:23:23 -0000 1.46 *************** *** 540,544 **** wxASSERT(tacticalMap); wxASSERT(briefingConsoleLeft); ! director = new tcDirector(tacticalMap, &mcSound, briefingConsoleLeft, this); director->SetStartTime(0); director->InitTest(); // load test event sequence --- 540,544 ---- wxASSERT(tacticalMap); wxASSERT(briefingConsoleLeft); ! director = new tcDirector(viewer, tacticalMap, &mcSound, briefingConsoleLeft, this); director->SetStartTime(0); director->InitTest(); // load test event sequence *************** *** 872,875 **** --- 872,876 ---- size3D = MODE3D_FULL; } + Update3DSize(); } Index: tc3DViewer.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tc3DViewer.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** tc3DViewer.cpp 15 Dec 2003 04:19:59 -0000 1.21 --- tc3DViewer.cpp 31 Dec 2003 00:23:23 -0000 1.22 *************** *** 216,219 **** --- 216,228 ---- } + /** + * + */ + void tc3DViewer::SetCameraMode(bool lookAt, bool moveWith) + { + lookAtTarget = lookAt; + moveWithTarget = moveWith; + } + void tc3DViewer::SetGameTime(double t) { *************** *** 223,226 **** --- 232,258 ---- /** + * Sets position of camera for non-moveWithCamera modes. + */ + void tc3DViewer::SetGeoPosition(double lon_rad, double lat_rad, float alt_m) + { + cameraLongitude = lon_rad; + cameraLatitude = lat_rad; + cameraAltitude = alt_m; + } + + void tc3DViewer::SetLook(float az, float el) + { + cameraLookAz = az; + cameraLookEl = el; + } + + void tc3DViewer::SetMoveWithVector(float az, float el, float range) + { + cameraAz = az; + cameraEl = el; + cameraRange = range; + } + + /** * Set the origin (0,0) of 3D world coordinates and * update lonToGridX and gridXToLon scale factors which *************** *** 432,445 **** tcGameObject *obj = simState->GetObject(hookID); if (!obj) return; ! cameraTarget = GetObjectPosition(obj); ! float camx = cosf(cameraEl)*sinf(cameraAz); ! float camy = cosf(cameraEl)*cosf(cameraAz); ! float camz = sinf(cameraEl); ! ! Producer::Vec3 camOffset = Producer::Vec3(camx,camy,camz)*cameraRange; ! Producer::Matrix m = Producer::Matrix::translate(camOffset); - cameraPosition = cameraTarget*m; camera->setViewByLookat(cameraPosition, cameraTarget, Producer::Vec3(0,0,1)); --- 464,501 ---- tcGameObject *obj = simState->GetObject(hookID); if (!obj) return; + + Producer::Vec3 targetPosition; + if (lookAtTarget || moveWithTarget) + { + targetPosition = GetObjectPosition(obj); + } + if (moveWithTarget) + { + float camx = cosf(cameraEl)*sinf(cameraAz); + float camy = cosf(cameraEl)*cosf(cameraAz); + float camz = sinf(cameraEl); + Producer::Vec3 camOffset = Producer::Vec3(camx,camy,camz)*cameraRange; + Producer::Matrix m = Producer::Matrix::translate(camOffset); + cameraPosition = targetPosition*m; + } + else + { + cameraPosition = GetCameraPosition(); + } ! if (lookAtTarget) ! { ! cameraTarget = targetPosition; ! } ! else ! { ! float camx = cosf(cameraLookEl)*sinf(cameraLookAz); ! float camy = cosf(cameraLookEl)*cosf(cameraLookAz); ! float camz = sinf(cameraLookEl); ! Producer::Vec3 lookOffset = Producer::Vec3(camx,camy,camz); ! Producer::Matrix m = Producer::Matrix::translate(lookOffset); ! cameraTarget = cameraPosition*m; ! } camera->setViewByLookat(cameraPosition, cameraTarget, Producer::Vec3(0,0,1)); *************** *** 538,541 **** --- 594,609 ---- /** + * Converts lon/lat coords to world coords. + * @return camera position in world coordinates. + */ + Producer::Vec3 tc3DViewer::GetCameraPosition() + { + float x = LonToX(cameraLongitude); + float y = LatToY(cameraLatitude); + float z = cameraAltitude; + return Producer::Vec3(x,y,z); + } + + /** * @return object position in world coordinates. */ *************** *** 772,775 **** --- 840,850 ---- viewWireframe = false; useRelativeChildPos = true; + moveWithTarget = true; + lookAtTarget = true; + cameraLongitude = 0; + cameraLatitude = 0; + cameraAltitude = 100.0f; + cameraLookAz = 0; + cameraLookEl = 0; Index: tcDirector.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcDirector.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** tcDirector.cpp 22 Dec 2003 02:32:37 -0000 1.2 --- tcDirector.cpp 31 Dec 2003 00:23:23 -0000 1.3 *************** *** 107,113 **** } ! tcDirector::tcDirector(tcMapView *mv, tcSound *soundInterface, tcConsole *console , wxWindow *win) ! : mapView(mv) { tcSoundEvent::AttachSound(soundInterface); --- 107,113 ---- } ! tcDirector::tcDirector(tc3DViewer *view3D, tcMapView *mv, tcSound *soundInterface, tcConsole *console , wxWindow *win) ! : mapView(mv), viewer(view3D) { tcSoundEvent::AttachSound(soundInterface); |
From: <ddc...@us...> - 2003-12-31 00:23:26
|
Update of /cvsroot/gcblue/gcb_wx/include/sim In directory sc8-pr-cvs1:/tmp/cvs-serv31613/include/sim Modified Files: tc3DViewer.h tcDirector.h Log Message: More camera views Index: tc3DViewer.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/sim/tc3DViewer.h,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** tc3DViewer.h 11 Dec 2003 01:40:57 -0000 1.15 --- tc3DViewer.h 31 Dec 2003 00:23:22 -0000 1.16 *************** *** 103,112 **** --- 103,117 ---- void DirtyAll(); void Frame(); + Producer::Vec3 GetCameraPosition(); Producer::Vec3 GetObjectPosition(tcGameObject *obj); bool IsActive() {return isActive;} void LoadModel(tcGameObject *obj); void SetActive(bool b) {isActive = b;wxWindow::Enable(b);} + void SetCameraMode(bool lookAt, bool moveWith); void SetGameTime(double t); + void SetGeoPosition(double lon_rad, double lat_rad, float alt_m); void SetHookID(long id) {hookID = id;} + void SetLook(float az, float el); + void SetMoveWithVector(float az, float el, float range); void SetText(const char *s); void ToggleFog(); *************** *** 142,150 **** // camera parameters Producer::Vec3 cameraPosition; ///< current position of camera ! Producer::Vec3 cameraTarget; ///< point camera is looking at ! float cameraAz; ///< camera azimuth ! float cameraEl; ///< camera elevation ! float cameraRange; ///< range of camera wxPoint clickPoint; ///< anchor point for mouse look float azStart; ///< camera az start for mouse look --- 147,162 ---- // camera parameters + bool lookAtTarget; ///< true to make camera point at target + bool moveWithTarget; ///< true to make camera move with target + double cameraLongitude; ///< lon,lat,alt pos of camera for non moveWith modes + double cameraLatitude; ///< radians + float cameraAltitude; ///< meters Producer::Vec3 cameraPosition; ///< current position of camera ! Producer::Vec3 cameraTarget; ///< point camera is looking at for lookAt modes ! float cameraAz; ///< camera azimuth relative to target for moveWith modes ! float cameraEl; ///< camera elevation relative to target for moveWith modes ! float cameraRange; ///< range of camera relative to target for moveWith modes ! float cameraLookAz; ///< look az for non-lookat modes ! float cameraLookEl; ///< look el for non-lookat modes wxPoint clickPoint; ///< anchor point for mouse look float azStart; ///< camera az start for mouse look Index: tcDirector.h =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/include/sim/tcDirector.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcDirector.h 29 Dec 2003 01:10:25 -0000 1.3 --- tcDirector.h 31 Dec 2003 00:23:22 -0000 1.4 *************** *** 33,36 **** --- 33,37 ---- class tcSound; class tcConsole; + class tc3DViewer; namespace MapView *************** *** 62,69 **** void Update(double t); ! tcDirector(tcMapView *mv, tcSound *soundInterface, tcConsole *console, wxWindow *win); ~tcDirector(); private: tcMapView *mapView; ///< tcMapView object for map events (only one supported currently) }; --- 63,71 ---- void Update(double t); ! tcDirector(tc3DViewer *view3D, tcMapView *mv, tcSound *soundInterface, tcConsole *console, wxWindow *win); ~tcDirector(); private: tcMapView *mapView; ///< tcMapView object for map events (only one supported currently) + tc3DViewer *viewer; ////< tc3DViewer object for camera events }; |