1 /*
2  *  VehicleObject.h
3  *  toycars_vehicle_editor
4  *
5  *  Created by Ruben Henner Zilibowitz on 23/02/09.
6  *  Copyright 2009 Ruben Henner Zilibowitz. All rights reserved.
7  *
8  */
9 
10 #ifndef VEHICLEOBJECT_H
11 #define VEHICLEOBJECT_H 1
12 #ifdef HAVE_CONFIG_H
13 #include <config.h>
14 #endif
15 
16 #include <vector>
17 #include <list>
18 
19 struct Vec2D {
20    double x, y;
21    Vec2D(double xx=0, double yy=0) {x=xx;y=yy;}
22 };
23 
24 typedef std::vector< std::list<Vec2D> > Geometry;
25 
26 class VehicleObject {
27 public:
28       VehicleObject();
29       ~VehicleObject();
30 
31    void reset();
32    void loadVehicle(const char *filename);
33    void saveVehicle(const char *filename);
34    void installVehicle(const char *name);
35    void uninstallVehicle(const char *name);
36 
37    void loadSpriteFromDataDir(const char *name);
38    void loadWheelSpriteFromDataDir(const char *name);
39 
getAxelWidth()40    double getAxelWidth() { return axelWidth; }
getFrontAxel()41    double getFrontAxel() { return frontAxel; }
getRearAxel()42    double getRearAxel() { return rearAxel; }
getFrontWheelInset()43    double getFrontWheelInset() { return frontWheelInset; }
getFrontWheelRadius()44    double getFrontWheelRadius() { return frontWheelRadius; }
getRearWheelRadius()45    double getRearWheelRadius() { return rearWheelRadius; }
getMass()46    double getMass() { return mass; }
getInertia()47    double getInertia() { return inertia; }
getFrontWheelInertia()48    double getFrontWheelInertia() { return frontWheelInertia; }
getRearWheelInertia()49    double getRearWheelInertia() { return rearWheelInertia; }
getDrag()50    double getDrag() { return drag; }
getRollingResistance()51    double getRollingResistance() { return rollingResistance; }
getVehicleFrameWidth()52    int getVehicleFrameWidth() { return vehicleFrameWidth; }
getVehicleFrameHeight()53    int getVehicleFrameHeight() { return vehicleFrameHeight; }
getWheelFrameWidth()54    int getWheelFrameWidth() { return wheelFrameWidth; }
getWheelFrameHeight()55    int getWheelFrameHeight() { return wheelFrameHeight; }
getWheelsAboveSprite()56    bool getWheelsAboveSprite() { return wheelsAboveSprite; }
getGeometry()57    Geometry *getGeometry() { return &geometry; }
getFrontSlipRatioPacejka()58    double *getFrontSlipRatioPacejka() { return frontSlipRatioPacejka; }
getFrontSlipAnglePacejka()59    double *getFrontSlipAnglePacejka() { return frontSlipAnglePacejka; }
getRearSlipRatioPacejka()60    double *getRearSlipRatioPacejka() { return rearSlipRatioPacejka; }
getRearSlipAnglePacejka()61    double *getRearSlipAnglePacejka() { return rearSlipAnglePacejka; }
getVehicleSpriteFilename()62    char *getVehicleSpriteFilename() { return vehicleSpriteFilename; }
getWheelSpriteFilename()63    char *getWheelSpriteFilename() { return wheelSpriteFilename; }
getTitle()64    const char *getTitle() { return title; }
getAuthor()65    const char *getAuthor() { return author; }
66 
setWheelAboveSprite(bool x)67    void setWheelAboveSprite(bool x) { wheelsAboveSprite = x; }
setAxelWidth(double x)68    void setAxelWidth(double x) { axelWidth = x; }
setFrontAxel(double x)69    void setFrontAxel(double x) { frontAxel = x; }
setRearAxel(double x)70    void setRearAxel(double x) { rearAxel = x; }
setFrontWheelInset(double x)71    void setFrontWheelInset(double x) { frontWheelInset = x; }
setFrontWheelRadius(double x)72    void setFrontWheelRadius(double x) { frontWheelRadius = x; }
setRearWheelRadius(double x)73    void setRearWheelRadius(double x) { rearWheelRadius = x; }
setMass(double x)74    void setMass(double x) { mass = x; }
setInertia(double x)75    void setInertia(double x) { inertia = x; }
setFrontWheelInertia(double x)76    void setFrontWheelInertia(double x) { frontWheelInertia = x; }
setRearWheelInertia(double x)77    void setRearWheelInertia(double x) { rearWheelInertia = x; }
setDrag(double x)78    void setDrag(double x) { drag = x; }
setRollingResistance(double x)79    void setRollingResistance(double x) { rollingResistance = x; }
setVehicleFrameWidth(int x)80    void setVehicleFrameWidth(int x) { vehicleFrameWidth = x; }
setVehicleFrameHeight(int x)81    void setVehicleFrameHeight(int x) { vehicleFrameHeight = x; }
setWheelFrameWidth(int x)82    void setWheelFrameWidth(int x) { wheelFrameWidth = x; }
setWheelFrameHeight(int x)83    void setWheelFrameHeight(int x) { wheelFrameHeight = x; }
84    void setTitle(const char *str);
85    void setAuthor(const char *str);
86 
87 protected:
88    char title[256];
89    char author[256];
90    int vehicleFrameWidth, vehicleFrameHeight;
91    char vehicleSpriteFilename[256];
92    Geometry geometry;
93    double axelWidth;
94    double frontAxel;
95    double rearAxel;
96    double frontWheelInset;
97    double frontWheelRadius;
98    double rearWheelRadius;
99    double mass;
100    double inertia;
101    double frontWheelInertia;
102    double rearWheelInertia;
103    double drag;
104    double rollingResistance;
105    int wheelFrameWidth, wheelFrameHeight;
106    bool wheelsAboveSprite;
107    char wheelSpriteFilename[256];
108    double frontSlipRatioPacejka[4];
109    double frontSlipAnglePacejka[4];
110    double rearSlipRatioPacejka[4];
111    double rearSlipAnglePacejka[4];
112 };
113 
114 #endif
115