Removed manual memory management in CBrain and CObjectInterface
parent
a3fa3487b2
commit
726cfbda77
|
@ -79,18 +79,13 @@ CBrain::CBrain(COldObject* object)
|
|||
m_scriptRun = nullptr;
|
||||
m_soluceName[0] = 0;
|
||||
|
||||
m_bTraceRecord = false;
|
||||
m_traceRecordBuffer = nullptr;
|
||||
m_traceRecord = false;
|
||||
}
|
||||
|
||||
// Object's destructor.
|
||||
|
||||
CBrain::~CBrain()
|
||||
{
|
||||
m_program.clear();
|
||||
|
||||
delete[] m_traceRecordBuffer;
|
||||
m_traceRecordBuffer = nullptr;
|
||||
}
|
||||
|
||||
void CBrain::SetPhysics(CPhysics* physics)
|
||||
|
@ -273,7 +268,7 @@ bool CBrain::EventFrame(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( m_bTraceRecord ) // registration of the design in progress?
|
||||
if ( m_traceRecord ) // registration of the design in progress?
|
||||
{
|
||||
TraceRecordFrame();
|
||||
}
|
||||
|
@ -518,10 +513,15 @@ bool CBrain::WriteStack(FILE *file)
|
|||
|
||||
void CBrain::TraceRecordStart()
|
||||
{
|
||||
if (m_traceRecord)
|
||||
{
|
||||
TraceRecordStop();
|
||||
}
|
||||
|
||||
CMotionVehicle* motionVehicle = dynamic_cast<CMotionVehicle*>(m_motion);
|
||||
assert(motionVehicle != nullptr);
|
||||
|
||||
m_bTraceRecord = true;
|
||||
m_traceRecord = true;
|
||||
|
||||
m_traceOper = TO_STOP;
|
||||
|
||||
|
@ -537,8 +537,7 @@ void CBrain::TraceRecordStart()
|
|||
m_traceColor = TraceColor::Default;
|
||||
}
|
||||
|
||||
delete[] m_traceRecordBuffer;
|
||||
m_traceRecordBuffer = new TraceRecord[MAXTRACERECORD];
|
||||
m_traceRecordBuffer = MakeUniqueArray<TraceRecord>(MAXTRACERECORD);
|
||||
m_traceRecordIndex = 0;
|
||||
}
|
||||
|
||||
|
@ -601,7 +600,7 @@ void CBrain::TraceRecordStop()
|
|||
TraceOper lastOper, curOper;
|
||||
float lastParam, curParam;
|
||||
|
||||
m_bTraceRecord = false;
|
||||
m_traceRecord = false;
|
||||
|
||||
std::stringstream buffer;
|
||||
buffer << "extern void object::AutoDraw()\n{\n";
|
||||
|
@ -633,8 +632,7 @@ void CBrain::TraceRecordStop()
|
|||
}
|
||||
TraceRecordPut(buffer, lastOper, lastParam);
|
||||
|
||||
delete[] m_traceRecordBuffer;
|
||||
m_traceRecordBuffer = nullptr;
|
||||
m_traceRecordBuffer.reset();
|
||||
|
||||
buffer << "}\n";
|
||||
|
||||
|
@ -694,7 +692,7 @@ bool CBrain::TraceRecordPut(std::stringstream& buffer, TraceOper oper, float par
|
|||
|
||||
bool CBrain::IsTraceRecord()
|
||||
{
|
||||
return m_bTraceRecord;
|
||||
return m_traceRecord;
|
||||
}
|
||||
|
||||
Program* CBrain::AddProgram()
|
||||
|
|
|
@ -160,11 +160,11 @@ protected:
|
|||
float m_time;
|
||||
float m_burnTime;
|
||||
|
||||
bool m_bTraceRecord;
|
||||
bool m_traceRecord;
|
||||
TraceOper m_traceOper;
|
||||
Math::Vector m_tracePos;
|
||||
float m_traceAngle;
|
||||
TraceColor m_traceColor;
|
||||
int m_traceRecordIndex;
|
||||
TraceRecord* m_traceRecordBuffer;
|
||||
std::unique_ptr<TraceRecord[]> m_traceRecordBuffer;
|
||||
};
|
||||
|
|
|
@ -65,6 +65,9 @@ CObjectInterface::CObjectInterface(COldObject* object)
|
|||
assert(object->Implements(ObjectInterfaceType::Programmable));
|
||||
m_brain = dynamic_cast<CProgrammableObject*>(m_object)->GetBrain();
|
||||
|
||||
m_physics = m_object->GetPhysics();
|
||||
m_motion = m_object->GetMotion();
|
||||
|
||||
m_engine = Gfx::CEngine::GetInstancePointer();
|
||||
m_water = m_engine->GetWater();
|
||||
m_particle = m_engine->GetParticle();
|
||||
|
@ -73,9 +76,6 @@ CObjectInterface::CObjectInterface(COldObject* object)
|
|||
m_camera = m_main->GetCamera();
|
||||
m_interface = m_main->GetInterface();
|
||||
m_sound = CApplication::GetInstancePointer()->GetSound();
|
||||
m_physics = m_object->GetPhysics();
|
||||
m_motion = m_object->GetMotion();
|
||||
m_studio = nullptr;
|
||||
|
||||
m_time = 0.0f;
|
||||
m_lastUpdateTime = 0.0f;
|
||||
|
@ -93,8 +93,6 @@ CObjectInterface::CObjectInterface(COldObject* object)
|
|||
|
||||
CObjectInterface::~CObjectInterface()
|
||||
{
|
||||
delete m_studio;
|
||||
m_studio = nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -109,7 +107,7 @@ void CObjectInterface::DeleteObject(bool all)
|
|||
m_soundChannelAlarm = -1;
|
||||
}
|
||||
|
||||
if ( m_studio != 0 ) // current edition?
|
||||
if ( m_studio != nullptr ) // current edition?
|
||||
{
|
||||
StopEditScript(true);
|
||||
}
|
||||
|
@ -222,7 +220,7 @@ bool CObjectInterface::EventProcess(const Event &event)
|
|||
}
|
||||
|
||||
if ( m_object->GetSelect() && // robot selected?
|
||||
m_studio != 0 ) // current issue?
|
||||
m_studio != nullptr ) // current issue?
|
||||
{
|
||||
m_studio->EventProcess(event);
|
||||
|
||||
|
@ -731,7 +729,7 @@ bool CObjectInterface::EventFrame(const Event &event)
|
|||
m_sound->Position(m_soundChannelAlarm, m_object->GetPosition());
|
||||
}
|
||||
|
||||
if ( m_studio != 0 ) // current edition?
|
||||
if ( m_studio != nullptr ) // current edition?
|
||||
{
|
||||
m_studio->EventProcess(event);
|
||||
}
|
||||
|
@ -747,7 +745,7 @@ void CObjectInterface::StartEditScript(Program* program, char* name)
|
|||
{
|
||||
CreateInterface(false); // removes the control buttons
|
||||
|
||||
m_studio = new CStudio();
|
||||
m_studio = MakeUnique<CStudio>();
|
||||
m_studio->StartEditScript(program->script.get(), name, program);
|
||||
}
|
||||
|
||||
|
@ -755,12 +753,10 @@ void CObjectInterface::StartEditScript(Program* program, char* name)
|
|||
|
||||
void CObjectInterface::StopEditScript(bool bCancel)
|
||||
{
|
||||
if ( !bCancel ) m_brain->SetActiveVirus(false);
|
||||
|
||||
if ( !m_studio->StopEditScript(bCancel) ) return;
|
||||
m_studio.reset();
|
||||
|
||||
delete m_studio;
|
||||
m_studio = 0;
|
||||
if ( !bCancel ) m_brain->SetActiveVirus(false);
|
||||
|
||||
CreateInterface(true); // puts the control buttons
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ protected:
|
|||
void GroundFlat();
|
||||
void ColorFlag(int color);
|
||||
|
||||
void UpdateScript(Ui::CWindow *pw);
|
||||
void UpdateScript(CWindow *pw);
|
||||
int GetSelScript();
|
||||
void SetSelScript(int index);
|
||||
void BlinkScript(bool bEnable);
|
||||
|
@ -86,15 +86,17 @@ protected:
|
|||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
Gfx::CParticle* m_particle;
|
||||
CRobotMain* m_main;
|
||||
Ui::CInterface* m_interface;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
COldObject* m_object;
|
||||
CTaskExecutorObject* m_taskExecutor;
|
||||
CBrain* m_brain;
|
||||
CPhysics* m_physics;
|
||||
CMotion* m_motion;
|
||||
Ui::CInterface* m_interface;
|
||||
CRobotMain* m_main;
|
||||
Ui::CStudio* m_studio;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
std::unique_ptr<CStudio> m_studio;
|
||||
|
||||
int m_selScript; // rank of the selected script
|
||||
|
||||
|
|
Loading…
Reference in New Issue