From 5fd64624d34e9332b726ecaffecbcbd6686a7d2e Mon Sep 17 00:00:00 2001 From: krzys-h Date: Sun, 28 Apr 2013 20:24:46 +0200 Subject: [PATCH] Fix for game crashing sometimes when using MissionController --- src/CMakeLists.txt | 1 + src/object/motion/motiondummy.cpp | 62 +++++++++++++++++++++++++++++++ src/object/motion/motiondummy.h | 32 ++++++++++++++++ src/object/object.cpp | 3 +- 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/object/motion/motiondummy.cpp create mode 100644 src/object/motion/motiondummy.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 26c02bc5..f4305dfd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -120,6 +120,7 @@ object/mainmovie.cpp object/motion/motion.cpp object/motion/motionant.cpp object/motion/motionbee.cpp +object/motion/motiondummy.cpp object/motion/motionhuman.cpp object/motion/motionmother.cpp object/motion/motionspider.cpp diff --git a/src/object/motion/motiondummy.cpp b/src/object/motion/motiondummy.cpp new file mode 100644 index 00000000..68827ff7 --- /dev/null +++ b/src/object/motion/motiondummy.cpp @@ -0,0 +1,62 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + + +#include "object/motion/motiondummy.h" + +#include "graphics/engine/modelmanager.h" + +#include +#include + + + + + +// Object's constructor. + +CMotionDummy::CMotionDummy(CObject* object) : CMotion(object) +{ +} + +// Object's destructor. + +CMotionDummy::~CMotionDummy() +{ +} + + +// Removes an object. + +void CMotionDummy::DeleteObject(bool bAll) +{ +} + + +// Creates a Dummy traveling any lands on the ground. + +bool CMotionDummy::Create(Math::Vector pos, float angle, ObjectType type, + float power) +{ + m_object->SetType(type); + + // Creates the main base. + int rank = m_engine->CreateObject(); + m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object + m_object->SetObjectRank(0, rank); + + return true; +} \ No newline at end of file diff --git a/src/object/motion/motiondummy.h b/src/object/motion/motiondummy.h new file mode 100644 index 00000000..744df2fd --- /dev/null +++ b/src/object/motion/motiondummy.h @@ -0,0 +1,32 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +// motiondummy.h + +#pragma once + + +#include "object/motion/motion.h" + +class CMotionDummy : public CMotion +{ +public: + CMotionDummy(CObject* object); + ~CMotionDummy(); + + void DeleteObject(bool bAll=false); + bool Create(Math::Vector pos, float angle, ObjectType type, float power); +}; \ No newline at end of file diff --git a/src/object/object.cpp b/src/object/object.cpp index ce79e341..34596449 100644 --- a/src/object/object.cpp +++ b/src/object/object.cpp @@ -64,6 +64,7 @@ #include "object/motion/motion.h" #include "object/motion/motionant.h" #include "object/motion/motionbee.h" +#include "object/motion/motiondummy.h" #include "object/motion/motionhuman.h" #include "object/motion/motionmother.h" #include "object/motion/motionspider.h" @@ -2146,7 +2147,7 @@ bool CObject::CreateVehicle(Math::Vector pos, float angle, ObjectType type, m_motion = new CMotionHuman(this); } else if ( type == OBJECT_CONTROLLER ) { - m_motion = new CMotion(this); //dummy object + m_motion = new CMotionDummy(this); //dummy object } else { m_motion = new CMotionVehicle(this);