mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 19:19:19 +02:00
Reorganize source files into logical subdirectories
Co-authored-by: Hirek193 <23196899+Hirek193@users.noreply.github.com>
This commit is contained in:
91
vehicle/AirCoupler.cpp
Normal file
91
vehicle/AirCoupler.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
This Source Code Form is subject to the
|
||||
terms of the Mozilla Public License, v.
|
||||
2.0. If a copy of the MPL was not
|
||||
distributed with this file, You can
|
||||
obtain one at
|
||||
http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "AirCoupler.h"
|
||||
|
||||
#include "Model3d.h"
|
||||
#include "parser.h"
|
||||
|
||||
AirCoupler::AirCoupler()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
AirCoupler::~AirCoupler()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \return 1 when \(straight\) TModel3d \c only ModelOn exists
|
||||
* \return 2 when \(slanted\) TModel3d \c ModelxOn exists
|
||||
* \return 0 when neither of them exist
|
||||
*/
|
||||
int AirCoupler::GetStatus()
|
||||
{
|
||||
if (ModelxOn)
|
||||
return 2;
|
||||
if (ModelOn)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset pointers and variables.
|
||||
*/
|
||||
void AirCoupler::Clear()
|
||||
{
|
||||
ModelOn = NULL;
|
||||
ModelOff = NULL;
|
||||
ModelxOn = NULL;
|
||||
On = false;
|
||||
xOn = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks for submodels in the model and updates pointers.
|
||||
*/
|
||||
void AirCoupler::Init(std::string const &asName, TModel3d *Model)
|
||||
{
|
||||
if (!Model)
|
||||
return;
|
||||
ModelOn = Model->GetFromName(asName + "_on"); // Straight connect.
|
||||
ModelOff = Model->GetFromName(asName + "_off"); // Not connected. Hung up.
|
||||
ModelxOn = Model->GetFromName(asName + "_xon"); // Slanted connect.
|
||||
}
|
||||
/**
|
||||
* Gets name of submodel \(from cParser \b *Parser\),
|
||||
* looks for it in the TModel3d \b *Model and update pointers.
|
||||
* If submodel is not found, reset pointers.
|
||||
*/
|
||||
void AirCoupler::Load(cParser *Parser, TModel3d *Model)
|
||||
{
|
||||
std::string name = Parser->getToken<std::string>();
|
||||
if(Model)
|
||||
{
|
||||
Init(name, Model);
|
||||
}
|
||||
else
|
||||
{
|
||||
ModelOn = NULL;
|
||||
ModelxOn = NULL;
|
||||
ModelOff = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Update submodels visibility.
|
||||
void AirCoupler::Update()
|
||||
{
|
||||
if (ModelOn)
|
||||
ModelOn->iVisible = On;
|
||||
if (ModelOff)
|
||||
ModelOff->iVisible = !(On || xOn);
|
||||
if (ModelxOn)
|
||||
ModelxOn->iVisible = xOn;
|
||||
}
|
||||
Reference in New Issue
Block a user