Merge branch 'fix-for-shadows' of https://github.com/xiendev/colobot into xiendev-fix-for-shadows

dev-ui
erihel 2013-04-29 14:20:07 +02:00
commit 64162a0e6f
6 changed files with 99 additions and 2 deletions

View File

@ -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

View File

@ -3651,7 +3651,7 @@ void CEngine::DrawShadow()
float lastIntensity = -1.0f;
for (int i = 0; i < static_cast<int>( m_shadows.size() ); i++)
{
if (m_shadows[i].hide)
if (m_shadows[i].hide || !m_shadows[i].used)
continue;
Math::Vector pos = m_shadows[i].pos; // pos = center of the shadow on the ground

View File

@ -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 <stdio.h>
#include <string.h>
// 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;
}

View File

@ -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);
};

View File

@ -931,6 +931,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
rank = m_engine->CreateObject();
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
pPower->SetObjectRank(0, rank);
pPower->CreateShadowCircle(1.5f, 1.0f); //create a shadow for battary
if ( power <= 1.0f ) modelManager->AddModelCopy("power.mod", false, rank);
else modelManager->AddModelCopy("atomic.mod", false, rank);

View File

@ -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);