15#include <simgear/scene/material/mat.hxx>
16#include <simgear/structure/SGSharedPtr.hxx>
28 std::string_view
getTypeString(
void)
const override {
return "ballistic"; }
34 void update(
double dt)
override;
50 void setCd(
double cd);
74 void setPch(
double e,
double dt,
double c);
75 int setHdg(
double az,
double dt,
double c);
76 void setBnk(
double r,
double dt,
double c);
77 void setHt(
double h,
double dt,
double c);
78 void setSpd(
double s,
double dt,
double c);
158 double _az_random_error;
159 double _el_random_error;
160 bool _aero_stabilised;
164 double _cd_randomness;
170 double _life_randomness;
171 double _load_resistance;
172 double _frictionFactor = 0.0;
175 bool _force_stabilised;
177 bool _slave_load_to_ac;
179 double _weight_lb = 0.0;
180 std::string _mat_name;
182 bool _report_collision;
184 bool _external_force;
187 SGPropertyNode_ptr _impact_report_node;
188 SGPropertyNode_ptr _contents_node;
190 double _fuse_range = 0.0;
192 std::string _force_path;
193 std::string _contents_path;
195 void handleEndOfLife(
double);
196 void handle_collision();
197 void handle_expiry();
198 void handle_impact();
200 void slaveToAC(
double dt);
201 void setContents(
double c);
205 SGVec3d getCartOffsetPos(SGGeod
pos,
double heading,
double pitch,
double roll)
const;
207 double getRecip(
double az);
208 double getMass()
const;
210 double _ground_offset = 0.0;
211 double _load_offset = 0.0;
213 SGVec3d _oldcartoffsetPos;
void update(double dt) override
SGPropertyNode_ptr _p_lat_node
bool init(ModelSearchOrder searchOrder) override
bool getSlavedLoad() const
void setTgtXOffset(double x)
void setSlavedLoad(bool s)
double getLoadOffset() const
SGPropertyNode_ptr _force_elevation_node
void setTgtZOffset(double z)
void readFromScenario(SGPropertyNode *scFileNode) override
void setOffsetVelocity(double dt, SGGeod pos)
virtual ~FGAIBallistic()=default
double getTgtYOffset() const
FGAIBallistic * ballistic
SGPropertyNode_ptr _p_rll_node
SGPropertyNode_ptr _p_vel_node
void setImpactReportNode(const std::string &)
void setSubmodel(const std::string &)
SGPropertyNode_ptr _p_lon_node
void setParentNodes(const SGPropertyNode_ptr)
SGPropertyNode_ptr _p_spd_node
bool getHtAGL(double start)
void setFuseRange(double f)
double getTgtXOffset() const
void setDragArea(double a)
void setBnk(double r, double dt, double c)
void setStabilisation(bool val)
static const double slugs_to_kgs
void setLifeRandomness(double randomness)
void setSpd(double s, double dt, double c)
SGVec3d getCartHitchPos() const
int setHdg(double az, double dt, double c)
void setWind_from_east(double fps)
void setTgtYOffset(double y)
void setForcePath(const std::string &)
void setLife(double seconds)
SGPropertyNode_ptr _p_ori_node
SGPropertyNode_ptr _force_node
void setOffsetPos(SGGeod pos, double heading, double pitch, double roll)
void setPch(double e, double dt, double c)
double getBearingToHitch() const
double getElevHitchToUser() const
SGPropertyNode_ptr _p_pos_node
void setHt(double h, double dt, double c)
void setContentsNode(const SGPropertyNode_ptr)
double getTgtZOffset() const
void setCollision(bool c)
double getRelBrgHitchToUser() const
static const double slugs_to_lbs
SGPropertyNode_ptr _p_pch_node
double getElevToHitch() const
void setSMPath(const std::string &)
void setTgtOffsets(double dt, double c)
void setAzimuth(double az)
void setLoadOffset(double l)
double getDistanceToHitch() const
void setForceStabilisation(bool val)
void setElevation(double el)
std::string_view getTypeString(void) const override
void setGroundOffset(double g)
void setContentsPath(const std::string &)
SGPropertyNode_ptr _p_hdg_node
void setCdRandomness(double randomness)
void setAzimuthRandomError(double error)
SGPropertyNode_ptr _force_azimuth_node
void setWind_from_north(double fps)
void setExternalForce(bool f)
SGPropertyNode_ptr _p_alt_node
SGPropertyNode_ptr _pnode
void setElevationRandomError(double error)
SGPropertyNode_ptr _p_agl_node
FGAIBallistic(object_type ot=object_type::otBallistic)
void setBuoyancy(double fpss)
FGAIBase(object_type ot, bool enableHot)