Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions es/objects/objects.mr
Original file line number Diff line number Diff line change
Expand Up @@ -604,5 +604,6 @@ public node vehicle => __engine_sim__vehicle {

public node transmission => __engine_sim__transmission {
input max_clutch_torque [float]: 1000 * units.lb_ft;
input variable [bool]: false;
alias output __out [transmission_channel];
}
3 changes: 2 additions & 1 deletion include/transmission.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class Transmission {
int GearCount;
const double *GearRatios;
double MaxClutchTorque;
bool variable;
};

public:
Expand All @@ -32,9 +33,9 @@ class Transmission {
inline double getClutchPressure() const { return m_clutchPressure; }
inline void setDiskPosition(double position) { m_diskPosition = clamp(position); }
inline double getDiskPosition() const { return m_diskPosition; }
void enableSlidingDisk();
inline bool isVariable() { return maySlide; }
protected:
void enableSlidingDisk();
atg_scs::ClutchConstraint m_clutchConstraint;
atg_scs::RigidBody *m_rotatingMass;
Vehicle *m_vehicle;
Expand Down
2 changes: 1 addition & 1 deletion scripting/include/transmission_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ namespace es_script {
protected:
virtual void registerInputs() {
addInput("max_clutch_torque", &m_parameters.MaxClutchTorque);

addInput("variable", &m_parameters.variable);
ObjectReferenceNode<TransmissionNode>::registerInputs();
}

Expand Down
3 changes: 2 additions & 1 deletion src/engine_sim_application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ void EngineSimApplication::processEngineInput() {
fineControlInUse = true;
}
else if (m_engine.IsKeyDown(ysKey::Code::J)) {
(*m_transmission).enableSlidingDisk(); //todo: disable
if ((*m_transmission).isVariable()) {
double diskPosition = (*m_transmission).getDiskPosition();
if (mouseWheelDelta > 0) {
(*m_transmission).setDiskPosition(diskPosition + 0.01);
Expand All @@ -773,6 +773,7 @@ void EngineSimApplication::processEngineInput() {

m_infoCluster->setLogMessage("[J] - T Disk position currently " + std::to_string((int)((1.0-diskPosition)*100))+"%");
fineControlInUse = true;
}
}

const double prevTargetThrottle = m_targetSpeedSetting;
Expand Down
3 changes: 3 additions & 0 deletions src/transmission.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ void Transmission::initialize(const Parameters &params) {
m_diskMax = m_gearRatios[0];
m_diskMin = m_gearRatios[params.GearCount - 1];
}
if (params.variable) {
enableSlidingDisk();
}
}

void Transmission::update(double dt) {
Expand Down