Starshatter_Open
Open source Starshatter engine
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Sensor.h
Go to the documentation of this file.
1 /* Project Starshatter 4.5
2  Destroyer Studios LLC
3  Copyright © 1997-2004. All Rights Reserved.
4 
5  SUBSYSTEM: Stars.exe
6  FILE: Sensor.h
7  AUTHOR: John DiCamillo
8 
9 
10  OVERVIEW
11  ========
12  Integrated (Passive and Active) Sensor Package class
13 */
14 
15 #ifndef Sensor_h
16 #define Sensor_h
17 
18 #include "Types.h"
19 #include "SimObject.h"
20 #include "System.h"
21 #include "Geometry.h"
22 #include "List.h"
23 
24 // +--------------------------------------------------------------------+
25 
26 class Shot;
27 class Contact;
28 
29 // +--------------------------------------------------------------------+
30 
31 class Sensor : public System, public SimObserver
32 {
33 public:
34  enum Mode {
35  PAS, STD, ACM, GM, // fighter modes
36  PST, CST // starship modes
37  };
38 
39  Sensor();
40  Sensor(const Sensor& rhs);
41  virtual ~Sensor();
42 
43  virtual void ExecFrame(double seconds);
45  bool closest=false,
46  bool hostile=false);
47  virtual SimObject* LockTarget(SimObject* candidate);
48  virtual bool IsTracking(SimObject* tgt);
49  virtual void DoEMCON(int emcon);
50 
51  virtual void ClearAllContacts();
52 
53  virtual Mode GetMode() const { return mode; }
54  virtual void SetMode(Mode m);
55  virtual double GetBeamLimit() const;
56  virtual double GetBeamRange() const;
57  virtual void IncreaseRange();
58  virtual void DecreaseRange();
59  virtual void AddRange(double r);
60 
63 
64  // borrow this sensor for missile seeker
67 
68  // SimObserver:
69  virtual bool Update(SimObject* obj);
70  virtual const char* GetObserverName() const;
71 
72 protected:
73  void ProcessContact(Ship* contact, double az1, double az2);
74  void ProcessContact(Shot* contact, double az1, double az2);
75 
77  int nsettings;
79  float range_settings[8];
81 
83 };
84 
85 #endif Sensor_h
86