2015-06-20 17:27:43 +00:00
|
|
|
|
/*
|
|
|
|
|
* This file is part of the Colobot: Gold Edition source code
|
|
|
|
|
* Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
|
|
|
|
|
* http://epsiteс.ch; http://colobot.info; http://github.com/colobot
|
|
|
|
|
*
|
|
|
|
|
* 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://gnu.org/licenses
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "object/object_factory.h"
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
#include "common/make_unique.h"
|
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "graphics/engine/engine.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "graphics/engine/lightning.h"
|
2015-07-09 16:45:02 +00:00
|
|
|
|
#include "graphics/engine/oldmodelmanager.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "graphics/engine/terrain.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
|
2015-07-11 17:48:37 +00:00
|
|
|
|
#include "graphics/model/model_manager.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-08-13 09:47:32 +00:00
|
|
|
|
#include "level/robotmain.h"
|
|
|
|
|
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "math/geometry.h"
|
|
|
|
|
|
2015-06-27 21:22:55 +00:00
|
|
|
|
#include "object/object_create_params.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "object/old_object.h"
|
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/auto/autobase.h"
|
|
|
|
|
#include "object/auto/autoconvert.h"
|
|
|
|
|
#include "object/auto/autoderrick.h"
|
|
|
|
|
#include "object/auto/autodestroyer.h"
|
|
|
|
|
#include "object/auto/autoegg.h"
|
|
|
|
|
#include "object/auto/autofactory.h"
|
|
|
|
|
#include "object/auto/autoflag.h"
|
2015-07-10 10:12:18 +00:00
|
|
|
|
#include "object/auto/autohouston.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/auto/autojostle.h"
|
|
|
|
|
#include "object/auto/autolabo.h"
|
|
|
|
|
#include "object/auto/automush.h"
|
|
|
|
|
#include "object/auto/autonest.h"
|
2015-07-10 10:12:18 +00:00
|
|
|
|
#include "object/auto/autonuclearplant.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/auto/autoportico.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "object/auto/autopowercaptor.h"
|
|
|
|
|
#include "object/auto/autopowerplant.h"
|
|
|
|
|
#include "object/auto/autopowerstation.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/auto/autoradar.h"
|
|
|
|
|
#include "object/auto/autorepair.h"
|
|
|
|
|
#include "object/auto/autoresearch.h"
|
|
|
|
|
#include "object/auto/autoroot.h"
|
|
|
|
|
#include "object/auto/autotower.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "object/auto/autovault.h"
|
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/motion/motionant.h"
|
|
|
|
|
#include "object/motion/motionbee.h"
|
|
|
|
|
#include "object/motion/motionhuman.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
#include "object/motion/motionlevelcontroller.h"
|
2015-07-10 10:12:18 +00:00
|
|
|
|
#include "object/motion/motionqueen.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
#include "object/motion/motionspider.h"
|
|
|
|
|
#include "object/motion/motiontoto.h"
|
|
|
|
|
#include "object/motion/motionvehicle.h"
|
|
|
|
|
#include "object/motion/motionworm.h"
|
2015-08-02 11:09:48 +00:00
|
|
|
|
|
2015-06-27 21:22:55 +00:00
|
|
|
|
#include "object/subclass/exchange_post.h"
|
2015-07-11 17:48:37 +00:00
|
|
|
|
#include "object/subclass/static_object.h"
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
#include "physics/physics.h"
|
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
using COldObjectUPtr = std::unique_ptr<COldObject>;
|
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
CObjectFactory::CObjectFactory(Gfx::CEngine* engine,
|
|
|
|
|
Gfx::CTerrain* terrain,
|
2015-07-11 17:48:37 +00:00
|
|
|
|
Gfx::COldModelManager* oldModelManager,
|
|
|
|
|
Gfx::CModelManager* modelManager,
|
2015-07-10 17:53:32 +00:00
|
|
|
|
Gfx::CParticle* particle)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
: m_engine(engine)
|
|
|
|
|
, m_terrain(terrain)
|
2015-07-11 17:48:37 +00:00
|
|
|
|
, m_oldModelManager(oldModelManager)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
, m_modelManager(modelManager)
|
|
|
|
|
, m_particle(particle)
|
|
|
|
|
{}
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateObject(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-07-11 17:48:37 +00:00
|
|
|
|
if (CStaticObject::IsStaticObject(params.type))
|
|
|
|
|
{
|
|
|
|
|
return CStaticObject::Create(params.id,
|
|
|
|
|
params.type,
|
|
|
|
|
params.pos,
|
|
|
|
|
params.angle,
|
|
|
|
|
params.height,
|
|
|
|
|
m_engine,
|
|
|
|
|
m_modelManager,
|
|
|
|
|
m_engine->GetTerrain());
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
switch (params.type)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
|
|
|
|
case OBJECT_NULL:
|
|
|
|
|
return nullptr;
|
|
|
|
|
|
2015-06-27 21:22:55 +00:00
|
|
|
|
case OBJECT_INFO:
|
2015-07-11 17:48:37 +00:00
|
|
|
|
return CExchangePost::Create(params, m_oldModelManager, m_engine);
|
2015-06-27 21:22:55 +00:00
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
case OBJECT_PORTICO:
|
|
|
|
|
case OBJECT_BASE:
|
|
|
|
|
case OBJECT_DERRICK:
|
|
|
|
|
case OBJECT_FACTORY:
|
|
|
|
|
case OBJECT_STATION:
|
|
|
|
|
case OBJECT_CONVERT:
|
|
|
|
|
case OBJECT_REPAIR:
|
|
|
|
|
case OBJECT_DESTROYER:
|
|
|
|
|
case OBJECT_TOWER:
|
|
|
|
|
case OBJECT_NEST:
|
|
|
|
|
case OBJECT_RESEARCH:
|
|
|
|
|
case OBJECT_RADAR:
|
|
|
|
|
case OBJECT_ENERGY:
|
|
|
|
|
case OBJECT_LABO:
|
|
|
|
|
case OBJECT_NUCLEAR:
|
|
|
|
|
case OBJECT_PARA:
|
|
|
|
|
case OBJECT_SAFE:
|
|
|
|
|
case OBJECT_HUSTON:
|
|
|
|
|
case OBJECT_TARGET1:
|
|
|
|
|
case OBJECT_TARGET2:
|
|
|
|
|
case OBJECT_START:
|
|
|
|
|
case OBJECT_END:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateBuilding(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_FRET:
|
|
|
|
|
case OBJECT_STONE:
|
|
|
|
|
case OBJECT_URANIUM:
|
|
|
|
|
case OBJECT_METAL:
|
|
|
|
|
case OBJECT_POWER:
|
|
|
|
|
case OBJECT_ATOMIC:
|
|
|
|
|
case OBJECT_BULLET:
|
|
|
|
|
case OBJECT_BBOX:
|
|
|
|
|
case OBJECT_KEYa:
|
|
|
|
|
case OBJECT_KEYb:
|
|
|
|
|
case OBJECT_KEYc:
|
|
|
|
|
case OBJECT_KEYd:
|
|
|
|
|
case OBJECT_TNT:
|
|
|
|
|
case OBJECT_SCRAP1:
|
|
|
|
|
case OBJECT_SCRAP2:
|
|
|
|
|
case OBJECT_SCRAP3:
|
|
|
|
|
case OBJECT_SCRAP4:
|
|
|
|
|
case OBJECT_SCRAP5:
|
|
|
|
|
case OBJECT_BOMB:
|
|
|
|
|
case OBJECT_WAYPOINT:
|
|
|
|
|
case OBJECT_SHOW:
|
|
|
|
|
case OBJECT_WINFIRE:
|
|
|
|
|
case OBJECT_BAG:
|
|
|
|
|
case OBJECT_MARKPOWER:
|
|
|
|
|
case OBJECT_MARKSTONE:
|
|
|
|
|
case OBJECT_MARKURANIUM:
|
|
|
|
|
case OBJECT_MARKKEYa:
|
|
|
|
|
case OBJECT_MARKKEYb:
|
|
|
|
|
case OBJECT_MARKKEYc:
|
|
|
|
|
case OBJECT_MARKKEYd:
|
|
|
|
|
case OBJECT_EGG:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateResource(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_FLAGb:
|
|
|
|
|
case OBJECT_FLAGr:
|
|
|
|
|
case OBJECT_FLAGg:
|
|
|
|
|
case OBJECT_FLAGy:
|
|
|
|
|
case OBJECT_FLAGv:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateFlag(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_BARRIER0:
|
|
|
|
|
case OBJECT_BARRIER1:
|
|
|
|
|
case OBJECT_BARRIER2:
|
|
|
|
|
case OBJECT_BARRIER3:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateBarrier(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_PLANT0:
|
|
|
|
|
case OBJECT_PLANT1:
|
|
|
|
|
case OBJECT_PLANT2:
|
|
|
|
|
case OBJECT_PLANT3:
|
|
|
|
|
case OBJECT_PLANT4:
|
|
|
|
|
case OBJECT_PLANT5:
|
|
|
|
|
case OBJECT_PLANT6:
|
|
|
|
|
case OBJECT_PLANT7:
|
|
|
|
|
case OBJECT_PLANT8:
|
|
|
|
|
case OBJECT_PLANT9:
|
|
|
|
|
case OBJECT_PLANT10:
|
|
|
|
|
case OBJECT_PLANT11:
|
|
|
|
|
case OBJECT_PLANT12:
|
|
|
|
|
case OBJECT_PLANT13:
|
|
|
|
|
case OBJECT_PLANT14:
|
|
|
|
|
case OBJECT_PLANT15:
|
|
|
|
|
case OBJECT_PLANT16:
|
|
|
|
|
case OBJECT_PLANT17:
|
|
|
|
|
case OBJECT_PLANT18:
|
|
|
|
|
case OBJECT_PLANT19:
|
|
|
|
|
case OBJECT_TREE1:
|
|
|
|
|
case OBJECT_TREE2:
|
|
|
|
|
case OBJECT_TREE3:
|
|
|
|
|
case OBJECT_TREE4:
|
|
|
|
|
case OBJECT_TREE5:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreatePlant(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_MUSHROOM1:
|
|
|
|
|
case OBJECT_MUSHROOM2:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateMushroom(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_QUARTZ0:
|
|
|
|
|
case OBJECT_QUARTZ1:
|
|
|
|
|
case OBJECT_QUARTZ2:
|
|
|
|
|
case OBJECT_QUARTZ3:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateQuartz(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_ROOT0:
|
|
|
|
|
case OBJECT_ROOT1:
|
|
|
|
|
case OBJECT_ROOT2:
|
|
|
|
|
case OBJECT_ROOT3:
|
|
|
|
|
case OBJECT_ROOT4:
|
|
|
|
|
case OBJECT_ROOT5:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateRoot(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_HOME1:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateHome(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_RUINmobilew1:
|
|
|
|
|
case OBJECT_RUINmobilew2:
|
|
|
|
|
case OBJECT_RUINmobilet1:
|
|
|
|
|
case OBJECT_RUINmobilet2:
|
|
|
|
|
case OBJECT_RUINmobiler1:
|
|
|
|
|
case OBJECT_RUINmobiler2:
|
|
|
|
|
case OBJECT_RUINfactory:
|
|
|
|
|
case OBJECT_RUINdoor:
|
|
|
|
|
case OBJECT_RUINsupport:
|
|
|
|
|
case OBJECT_RUINradar:
|
|
|
|
|
case OBJECT_RUINconvert:
|
|
|
|
|
case OBJECT_RUINbase:
|
|
|
|
|
case OBJECT_RUINhead:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateRuin(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_APOLLO1:
|
|
|
|
|
case OBJECT_APOLLO3:
|
|
|
|
|
case OBJECT_APOLLO4:
|
|
|
|
|
case OBJECT_APOLLO5:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateApollo(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_MOTHER:
|
|
|
|
|
case OBJECT_ANT:
|
|
|
|
|
case OBJECT_SPIDER:
|
|
|
|
|
case OBJECT_BEE:
|
|
|
|
|
case OBJECT_WORM:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateInsect(params); // no eggs
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
case OBJECT_HUMAN:
|
|
|
|
|
case OBJECT_TECH:
|
|
|
|
|
case OBJECT_TOTO:
|
|
|
|
|
case OBJECT_MOBILEfa:
|
|
|
|
|
case OBJECT_MOBILEta:
|
|
|
|
|
case OBJECT_MOBILEwa:
|
|
|
|
|
case OBJECT_MOBILEia:
|
|
|
|
|
case OBJECT_MOBILEfc:
|
|
|
|
|
case OBJECT_MOBILEtc:
|
|
|
|
|
case OBJECT_MOBILEwc:
|
|
|
|
|
case OBJECT_MOBILEic:
|
|
|
|
|
case OBJECT_MOBILEfi:
|
|
|
|
|
case OBJECT_MOBILEti:
|
|
|
|
|
case OBJECT_MOBILEwi:
|
|
|
|
|
case OBJECT_MOBILEii:
|
|
|
|
|
case OBJECT_MOBILEfs:
|
|
|
|
|
case OBJECT_MOBILEts:
|
|
|
|
|
case OBJECT_MOBILEws:
|
|
|
|
|
case OBJECT_MOBILEis:
|
|
|
|
|
case OBJECT_MOBILErt:
|
|
|
|
|
case OBJECT_MOBILErc:
|
|
|
|
|
case OBJECT_MOBILErr:
|
|
|
|
|
case OBJECT_MOBILErs:
|
|
|
|
|
case OBJECT_MOBILEsa:
|
|
|
|
|
case OBJECT_MOBILEtg:
|
|
|
|
|
case OBJECT_MOBILEft:
|
|
|
|
|
case OBJECT_MOBILEtt:
|
|
|
|
|
case OBJECT_MOBILEwt:
|
|
|
|
|
case OBJECT_MOBILEit:
|
|
|
|
|
case OBJECT_MOBILEdr:
|
|
|
|
|
case OBJECT_APOLLO2:
|
2015-06-21 09:16:09 +00:00
|
|
|
|
return CreateVehicle(params);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a building laying on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateBuilding(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
float power = params.power;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PORTICO )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 67.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(0.0f, 0.0f, -33.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(2, 45.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(3, rank);
|
|
|
|
|
obj->SetObjectParent(3, 2);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(3, Math::Vector(50.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(3, -60.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(4, rank);
|
|
|
|
|
obj->SetObjectParent(4, 3);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico5.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(4, Math::Vector(35.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(4, -55.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(5, rank);
|
|
|
|
|
obj->SetObjectParent(5, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(5, Math::Vector(0.0f, 0.0f, 33.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(5, -45.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(6, rank);
|
|
|
|
|
obj->SetObjectParent(6, 5);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(6, Math::Vector(50.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(6, 60.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(7, rank);
|
|
|
|
|
obj->SetObjectParent(7, 6);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico5.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(7, Math::Vector(35.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(7, 55.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(8, rank);
|
|
|
|
|
obj->SetObjectParent(8, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico6.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(8, Math::Vector(-35.0f, 50.0f, -35.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(8, -Math::PI/2.0f);
|
|
|
|
|
obj->SetPartScale(8, 2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(9, rank);
|
|
|
|
|
obj->SetObjectParent(9, 8);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico7.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(9, Math::Vector(0.0f, 4.5f, 1.9f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(10, rank);
|
|
|
|
|
obj->SetObjectParent(10, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico6.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(10, Math::Vector(-35.0f, 50.0f, 35.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(10, -Math::PI/2.0f);
|
|
|
|
|
obj->SetPartScale(10, 2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(11, rank);
|
|
|
|
|
obj->SetObjectParent(11, 10);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("portico7.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(11, Math::Vector(0.0f, 4.5f, 1.9f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 28.0f, 0.0f), 45.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 27.0f, 10.0f, -42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 10.0f, -42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-27.0f, 10.0f, -42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 27.0f, 10.0f, 42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 10.0f, 42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-27.0f, 10.0f, 42.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-32.0f, 45.0f, -32.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-32.0f, 45.0f, 32.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 32.0f, 45.0f, -32.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 32.0f, 45.0f, 32.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 35.0f, 0.0f), 50.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(50.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BASE )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("base1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
for (int i=0 ; i<8 ; i++ )
|
|
|
|
|
{
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1+i, rank);
|
|
|
|
|
obj->SetObjectParent(1+i, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("base2.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
Math::Point p = Math::RotatePoint(-Math::PI/4.0f*i, 27.8f);
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1+i, Math::Vector(p.x, 30.0f, p.y));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(1+i, Math::PI/4.0f*i);
|
|
|
|
|
obj->SetPartRotationZ(1+i, Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(10+i, rank);
|
|
|
|
|
obj->SetObjectParent(10+i, 1+i);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("base4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(10+i, Math::Vector(23.5f, 0.0f, 7.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(18+i, rank);
|
|
|
|
|
obj->SetObjectParent(18+i, 1+i);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("base4.mod", true, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(18+i, Math::Vector(23.5f, 0.0f, -7.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(9, rank);
|
|
|
|
|
obj->SetObjectParent(9, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("base3.mod", false, rank, obj->GetTeam()); // central pillar
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 33.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 39.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 45.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 51.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 57.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 63.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 69.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 82.0f, 0.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 18.0f, 94.0f, 0.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-18.0f, 94.0f, 0.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 94.0f, 18.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 94.0f, -18.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 13.0f, 94.0f, 13.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-13.0f, 94.0f, 13.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 13.0f, 94.0f, -13.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-13.0f, 94.0f, -13.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f,104.0f, 0.0f), 14.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 45.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(60.0f, 1.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 28.6f, 73.4f, 30.0f, 0.4f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_DERRICK )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("derrick1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("derrick2.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 10.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 17.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 26.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(7.0f, 17.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 10.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(10.0f, 0.4f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RESEARCH )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("search1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("search2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 13.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("search3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(0.0f, 4.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(2, 35.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 9.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 6.0f, 0.0f), 9.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 14.0f, 0.0f), 7.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 8.0f, 0.0f), 12.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->GetCharacter()->posPower = Math::Vector(7.5f, 3.0f, 0.0f);
|
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(12.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RADAR )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("radar1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("radar2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 5.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("radar3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(0.0f, 11.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(2, -Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(3, rank);
|
|
|
|
|
obj->SetObjectParent(3, 2);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("radar4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(3, Math::Vector(0.0f, 4.5f, 1.9f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 3.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 11.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 7.0f, 0.0f), 7.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_ENERGY )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelCopy("energy.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 13.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-7.0f, 3.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 1.0f, 0.0f), 1.5f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-7.0f, 5.0f, 0.0f), 5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->GetCharacter()->posPower = Math::Vector(0.0f, 3.0f, 0.0f);
|
2015-08-11 20:51:09 +00:00
|
|
|
|
obj->SetEnergyLevel(power); // initializes the energy level
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_LABO )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(-9.0f, 3.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(1, Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(9.0f, -1.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(3, rank);
|
|
|
|
|
obj->SetObjectParent(3, 2);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(3, Math::Vector(0.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(3, 80.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(4, rank);
|
|
|
|
|
obj->SetObjectParent(4, 2);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(4, Math::Vector(0.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(4, 80.0f*Math::PI/180.0f);
|
|
|
|
|
obj->SetPartRotationY(4, Math::PI*2.0f/3.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(5, rank);
|
|
|
|
|
obj->SetObjectParent(5, 2);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("labo4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(5, Math::Vector(0.0f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(5, 80.0f*Math::PI/180.0f);
|
|
|
|
|
obj->SetPartRotationY(5, -Math::PI*2.0f/3.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 1.0f, 0.0f), 1.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 11.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 10.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-12.0f, 3.0f, 3.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-12.0f, 3.0f, -3.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-10.0f, 5.0f, 0.0f), 7.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->GetCharacter()->posPower = Math::Vector(0.0f, 3.0f, 0.0f);
|
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(7.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_FACTORY )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("factory1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
for (int i=0 ; i<9 ; i++ )
|
|
|
|
|
{
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1+i, rank);
|
|
|
|
|
obj->SetObjectParent(1+i, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("factory2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1+i, Math::Vector(10.0f, 2.0f*i, 10.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(1+i, Math::PI/2.0f);
|
|
|
|
|
obj->SetPartScaleZ(1+i, 0.30f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(10+i, rank);
|
|
|
|
|
obj->SetObjectParent(10+i, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("factory2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(10+i, Math::Vector(10.0f, 2.0f*i, -10.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(10+i, -Math::PI/2.0f);
|
|
|
|
|
obj->SetPartRotationY(10+i, Math::PI);
|
|
|
|
|
obj->SetPartScaleZ(10+i, 0.30f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i=0 ; i<2 ; i++ )
|
|
|
|
|
{
|
|
|
|
|
float s = static_cast<float>(i*2-1);
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 2.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 2.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 2.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 10.0f, 2.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 9.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 9.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 9.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 10.0f, 9.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 16.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 16.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 16.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 10.0f, 16.0f, 11.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 16.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 16.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 16.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 10.0f, 16.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 2.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 9.0f, 4.0f*s), 4.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 21.0f, -4.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 10.0f, 0.0f), 18.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(24.0f, 0.3f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_REPAIR )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("repair1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("repair2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(-11.0f, 13.5f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(1, Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 0.0f, 4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 0.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 0.0f, -4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 10.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-11.0f, 13.0f, 0.0f), 15.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_DESTROYER )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("destroy1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("destroy2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 0.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 0.0f, -13.5f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 0.0f, -13.5f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 0.0f, 13.5f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 0.0f, 13.5f), 4.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(19.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_STATION )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelCopy("station.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 2.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-15.0f, 5.0f, 0.0f), 6.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-08-11 20:51:09 +00:00
|
|
|
|
obj->SetEnergyLevel(power);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_CONVERT )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("convert1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("convert2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 14.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("convert3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(0.0f, 11.5f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationX(2, -Math::PI*0.35f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(3, rank);
|
|
|
|
|
obj->SetObjectParent(3, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("convert3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(3, Math::Vector(0.0f, 11.5f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(3, Math::PI);
|
|
|
|
|
obj->SetPartRotationX(3, -Math::PI*0.35f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 2.0f, 4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 2.0f, -4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 9.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 14.0f, 0.0f), 1.5f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-3.0f, 8.0f, 0.0f), 14.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TOWER )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tower.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("roller2c.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 20.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(1, Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("roller3c.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(4.5f, 0.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(2, 0.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 6.5f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 8.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 15.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 24.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 7.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->GetCharacter()->posPower = Math::Vector(5.0f, 3.0f, 0.0f);
|
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_NUCLEAR )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("nuclear1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("nuclear2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(20.0f, 10.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationZ(1, 135.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 0.0f, 0.0f), 19.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 24.0f, 0.0f), 15.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(22.0f, 1.0f, 0.0f), 1.5f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 17.0f, 0.0f), 26.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->GetCharacter()->posPower = Math::Vector(22.0f, 3.0f, 0.0f);
|
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(21.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PARA )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("para.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 16.0f, 18.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 13.0f, 3.0f, 13.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 11.0f, 15.0f, 11.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-13.0f, 3.0f, 13.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 15.0f, -11.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 13.0f, 3.0f, -13.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 11.0f, 15.0f, -11.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-13.0f, 3.0f, -13.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 15.0f, -11.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 26.0f, 0.0f), 9.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 54.0f, 0.0f), 14.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 10.0f, 0.0f), 20.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(21.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_SAFE )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("safe1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("safe2.mod", false, rank, obj->GetTeam());
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartScale(1, 1.05f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("safe3.mod", false, rank, obj->GetTeam());
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartScale(2, 1.05f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 18.0f, 20.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 1.0f, 0.0f), 13.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 1.0f, 0.0f), 13.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(23.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_HUSTON )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("huston1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("huston2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 39.0f, 30.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(1, -Math::PI/2.0f);
|
|
|
|
|
obj->SetPartScale(1, 3.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 1);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("huston3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(0.0f, 4.5f, 1.9f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 6.0f, -53.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, -53.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 6.0f, -26.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, -26.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 6.0f, 0.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, 0.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 6.0f, 26.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, 26.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 6.0f, 53.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-15.0f, 6.0f, 53.0f), 16.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 27.0f, 30.0f), 12.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 45.0f, 30.0f), 14.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 26.0f, 4.0f, -61.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-26.0f, 4.0f, -61.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 26.0f, 4.0f, 61.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-26.0f, 4.0f, 61.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TARGET1 )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("target1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(1.5f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 50.0f+14.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -7.0f, 50.0f+12.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 7.0f, 50.0f+12.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-12.0f, 50.0f+ 7.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 12.0f, 50.0f+ 7.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-14.0f, 50.0f+ 0.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 14.0f, 50.0f+ 0.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-12.0f, 50.0f- 7.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 12.0f, 50.0f- 7.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -7.0f, 50.0f-12.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 7.0f, 50.0f-12.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 50.0f-14.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 30.0f, 0.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 24.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 16.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(15.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TARGET2 )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("target2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
height += 50.0f*1.5f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_NEST )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("nest.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 3.0f, 5.0f, 1.0f, 0.5f);
|
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(4.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_START )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("start.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_END )
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("end.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
m_engine->LoadAllTextures();
|
|
|
|
|
|
2015-07-12 13:09:32 +00:00
|
|
|
|
obj->UpdateMapping();
|
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a small resource set on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateResource(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
float power = params.power;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-08-11 20:51:09 +00:00
|
|
|
|
obj->SetEnergyLevel(power);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
std::string name;
|
|
|
|
|
if ( type == OBJECT_STONE ) name = "stone.mod";
|
|
|
|
|
if ( type == OBJECT_URANIUM ) name = "uranium.mod";
|
|
|
|
|
if ( type == OBJECT_METAL ) name = "metal.mod";
|
|
|
|
|
if ( type == OBJECT_POWER ) name = "power.mod";
|
|
|
|
|
if ( type == OBJECT_ATOMIC ) name = "atomic.mod";
|
|
|
|
|
if ( type == OBJECT_BULLET ) name = "bullet.mod";
|
|
|
|
|
if ( type == OBJECT_BBOX ) name = "bbox.mod";
|
|
|
|
|
if ( type == OBJECT_KEYa ) name = "keya.mod";
|
|
|
|
|
if ( type == OBJECT_KEYb ) name = "keyb.mod";
|
|
|
|
|
if ( type == OBJECT_KEYc ) name = "keyc.mod";
|
|
|
|
|
if ( type == OBJECT_KEYd ) name = "keyd.mod";
|
|
|
|
|
if ( type == OBJECT_TNT ) name = "tnt.mod";
|
|
|
|
|
if ( type == OBJECT_SCRAP1 ) name = "scrap1.mod";
|
|
|
|
|
if ( type == OBJECT_SCRAP2 ) name = "scrap2.mod";
|
|
|
|
|
if ( type == OBJECT_SCRAP3 ) name = "scrap3.mod";
|
|
|
|
|
if ( type == OBJECT_SCRAP4 ) name = "scrap4.mod";
|
|
|
|
|
if ( type == OBJECT_SCRAP5 ) name = "scrap5.mod";
|
|
|
|
|
if ( type == OBJECT_BOMB ) name = "bomb.mod";
|
|
|
|
|
if ( type == OBJECT_WAYPOINT ) name = "waypoint.mod";
|
|
|
|
|
if ( type == OBJECT_SHOW ) name = "show.mod";
|
|
|
|
|
if ( type == OBJECT_WINFIRE ) name = "winfire.mod";
|
|
|
|
|
if ( type == OBJECT_BAG ) name = "bag.mod";
|
|
|
|
|
if ( type == OBJECT_MARKSTONE ) name = "cross1.mod";
|
|
|
|
|
if ( type == OBJECT_MARKURANIUM ) name = "cross3.mod";
|
|
|
|
|
if ( type == OBJECT_MARKPOWER ) name = "cross2.mod";
|
|
|
|
|
if ( type == OBJECT_MARKKEYa ) name = "crossa.mod";
|
|
|
|
|
if ( type == OBJECT_MARKKEYb ) name = "crossb.mod";
|
|
|
|
|
if ( type == OBJECT_MARKKEYc ) name = "crossc.mod";
|
|
|
|
|
if ( type == OBJECT_MARKKEYd ) name = "crossd.mod";
|
|
|
|
|
if ( type == OBJECT_EGG ) name = "egg.mod";
|
|
|
|
|
|
|
|
|
|
if (type == OBJECT_POWER || type == OBJECT_ATOMIC)
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelCopy(name, false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_SHOW ) // remains in the air?
|
|
|
|
|
{
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float radius = 1.5f;
|
|
|
|
|
float height = 0.0f;
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_MARKSTONE ||
|
|
|
|
|
type == OBJECT_MARKURANIUM ||
|
|
|
|
|
type == OBJECT_MARKKEYa ||
|
|
|
|
|
type == OBJECT_MARKKEYb ||
|
|
|
|
|
type == OBJECT_MARKKEYc ||
|
|
|
|
|
type == OBJECT_MARKKEYd ||
|
|
|
|
|
type == OBJECT_MARKPOWER ||
|
|
|
|
|
type == OBJECT_WAYPOINT )
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
else if ( type == OBJECT_EGG )
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-1.0f, 2.8f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
radius = 3.0f;
|
|
|
|
|
}
|
|
|
|
|
else if ( type == OBJECT_BOMB )
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 3.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
radius = 3.0f;
|
|
|
|
|
}
|
|
|
|
|
else if ( type == OBJECT_BAG )
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetScale(1.5f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
radius = 5.0f;
|
|
|
|
|
height = -1.4f;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 1.0f, 0.0f), 1.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 1.0f, 0.0f), 1.5f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
2015-06-21 09:16:09 +00:00
|
|
|
|
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(radius, 1.0f);
|
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
m_engine->LoadAllTextures();
|
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a flag placed on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateFlag(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
std::string name;
|
|
|
|
|
|
|
|
|
|
name = "";
|
|
|
|
|
if ( type == OBJECT_FLAGb ) name = "flag1b.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGr ) name = "flag1r.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGg ) name = "flag1g.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGy ) name = "flag1y.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGv ) name = "flag1v.mod";
|
|
|
|
|
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
name = "";
|
|
|
|
|
if ( type == OBJECT_FLAGb ) name = "flag2b.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGr ) name = "flag2r.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGg ) name = "flag2g.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGy ) name = "flag2y.mod";
|
|
|
|
|
if ( type == OBJECT_FLAGv ) name = "flag2v.mod";
|
|
|
|
|
|
|
|
|
|
for (int i=0 ; i<4 ; i++ )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1+i, rank);
|
|
|
|
|
obj->SetObjectParent(1+i, i);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
if ( i == 0 ) obj->SetPartPosition(1+i, Math::Vector(0.15f, 5.0f, 0.0f));
|
|
|
|
|
else obj->SetPartPosition(1+i, Math::Vector(0.79f, 0.0f, 0.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 1.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(2.0f, 0.3f);
|
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
m_engine->LoadAllTextures();
|
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a barrier placed on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BARRIER0 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("barrier0.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BARRIER1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("barrier1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(12.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BARRIER2 ) // cardboard?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("barrier2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(12.0f, 0.8f, Gfx::ENG_SHADOW_WORM);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BARRIER3 ) // match + straw?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("barrier3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(10.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a plant placed on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreatePlant(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PLANT0 ||
|
|
|
|
|
type == OBJECT_PLANT1 ||
|
|
|
|
|
type == OBJECT_PLANT2 ||
|
|
|
|
|
type == OBJECT_PLANT3 ||
|
|
|
|
|
type == OBJECT_PLANT4 ) // standard?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
if ( type == OBJECT_PLANT0 ) m_oldModelManager->AddModelReference("plant0.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT1 ) m_oldModelManager->AddModelReference("plant1.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT2 ) m_oldModelManager->AddModelReference("plant2.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT3 ) m_oldModelManager->AddModelReference("plant3.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT4 ) m_oldModelManager->AddModelReference("plant4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
height -= 2.0f;
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f, SOUND_BOUM, 0.10f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 6.0f));
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 8.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PLANT5 ||
|
|
|
|
|
type == OBJECT_PLANT6 ||
|
|
|
|
|
type == OBJECT_PLANT7 ) // clover?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
if ( type == OBJECT_PLANT5 ) m_oldModelManager->AddModelReference("plant5.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT6 ) m_oldModelManager->AddModelReference("plant6.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT7 ) m_oldModelManager->AddModelReference("plant7.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
//? obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 3.0f, SOUND_BOUM, 0.10f));
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 0.3f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PLANT8 ||
|
|
|
|
|
type == OBJECT_PLANT9 ) // squash?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
if ( type == OBJECT_PLANT8 ) m_oldModelManager->AddModelReference("plant8.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT9 ) m_oldModelManager->AddModelReference("plant9.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.0f, 0.0f), 4.0f, SOUND_BOUM, 0.10f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 10.0f, 0.0f), 4.0f, SOUND_BOUM, 0.10f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(10.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PLANT10 ||
|
|
|
|
|
type == OBJECT_PLANT11 ||
|
|
|
|
|
type == OBJECT_PLANT12 ||
|
|
|
|
|
type == OBJECT_PLANT13 ||
|
|
|
|
|
type == OBJECT_PLANT14 ) // succulent?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
if ( type == OBJECT_PLANT10 ) m_oldModelManager->AddModelReference("plant10.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT11 ) m_oldModelManager->AddModelReference("plant11.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT12 ) m_oldModelManager->AddModelReference("plant12.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT13 ) m_oldModelManager->AddModelReference("plant13.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT14 ) m_oldModelManager->AddModelReference("plant14.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 12.0f, 0.0f), 5.0f, SOUND_BOUM, 0.10f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 6.0f));
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 8.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.3f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_PLANT15 ||
|
|
|
|
|
type == OBJECT_PLANT16 ||
|
|
|
|
|
type == OBJECT_PLANT17 ||
|
|
|
|
|
type == OBJECT_PLANT18 ||
|
|
|
|
|
type == OBJECT_PLANT19 ) // fern?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
if ( type == OBJECT_PLANT15 ) m_oldModelManager->AddModelReference("plant15.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT16 ) m_oldModelManager->AddModelReference("plant16.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT17 ) m_oldModelManager->AddModelReference("plant17.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT18 ) m_oldModelManager->AddModelReference("plant18.mod", false, rank, obj->GetTeam());
|
|
|
|
|
if ( type == OBJECT_PLANT19 ) m_oldModelManager->AddModelReference("plant19.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type != OBJECT_PLANT19 )
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f, SOUND_BOUM, 0.10f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 6.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 8.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TREE1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tree1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 2.0f), 3.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 11.0f, 1.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 19.0f, 2.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 2.0f, 26.0f, 0.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 2.0f, 34.0f,-2.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TREE2 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tree2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 1.0f), 3.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 10.0f, 1.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 19.0f, 2.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 2.0f, 25.0f, 0.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 32.0f,-2.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TREE3 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tree3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 3.0f, 2.0f), 3.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.0f, 9.0f, 1.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 18.0f, 0.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 27.0f, 7.0f), 2.0f, SOUND_BOUMs, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TREE4 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tree4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 10.0f, 0.0f), 10.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 21.0f, 0.0f), 8.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 32.0f, 0.0f), 7.0f, SOUND_BOUMs, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(8.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TREE5 ) // giant tree (for the world "teen")
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("tree5.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 5.0f,-10.0f), 25.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-65.0f, 5.0f, 65.0f), 20.0f, SOUND_BOUMs, 0.20f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 38.0f, 5.0f, 21.0f), 18.0f, SOUND_BOUMs, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(50.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a mushroom placed on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateMushroom(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_MUSHROOM1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("mush1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 3.0f, SOUND_BOUM, 0.10f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 5.5f));
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 5.5f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_MUSHROOM2 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("mush2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 5.0f, 0.0f), 3.0f, SOUND_BOUM, 0.10f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 5.5f));
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 5.5f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a crystal placed on the ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateQuartz(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_QUARTZ0 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("quartz0.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.0f, 0.0f), 3.5f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 2.0f, 0.0f), 3.5f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(4.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("quartz1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ2 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("quartz2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 6.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 6.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ3 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("quartz3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 10.0f, 0.0f), 10.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 10.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(10.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
float radius = 0.0f;
|
|
|
|
|
if ( type == OBJECT_QUARTZ0 )
|
|
|
|
|
{
|
|
|
|
|
pos.y += 4.0f;
|
|
|
|
|
radius = 2.0f;
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ1 )
|
|
|
|
|
{
|
|
|
|
|
pos.y += 6.0f;
|
|
|
|
|
radius = 4.0f;
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ2 )
|
|
|
|
|
{
|
|
|
|
|
pos.y += 10.0f;
|
|
|
|
|
radius = 5.0f;
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_QUARTZ3 )
|
|
|
|
|
{
|
|
|
|
|
pos.y += 16.0f;
|
|
|
|
|
radius = 8.0f;
|
|
|
|
|
}
|
|
|
|
|
m_particle->CreateParticle(pos, pos, Math::Point(2.0f, 2.0f), Gfx::PARTIQUARTZ, 0.7f+Math::Rand()*0.7f, radius, 0.0f);
|
|
|
|
|
m_particle->CreateParticle(pos, pos, Math::Point(2.0f, 2.0f), Gfx::PARTIQUARTZ, 0.7f+Math::Rand()*0.7f, radius, 0.0f);
|
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a root placed on the ground.
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateRoot(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_ROOT0 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root0.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-5.0f, 1.0f, 0.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 4.0f, 1.0f, 2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 4.0f, 1.0f, -3.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 2.0f, 5.0f, -1.0f), 1.5f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-4.0f, 5.0f, -1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 8.0f, -0.5f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 10.0f, -0.5f), 1.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 11.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(16.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-4.0f, 1.0f, 1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 1.0f, 2.0f), 1.5f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 1.0f, -2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.0f, 5.0f, 1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 2.0f, 5.0f, 0.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 8.0f, 1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 12.0f, 1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 12.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(16.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT2 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root2.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.0f, 1.0f, 0.5f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 1.0f, -1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-1.0f, 4.5f, 0.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 7.0f, 1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 7.0f, -1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 4.0f, 11.0f, 1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(16.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT3 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root3.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-4.0f, 1.0f, 1.0f), 3.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 4.0f, 1.0f, -3.0f), 3.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 6.0f, 1.0f, 4.0f), 3.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-2.5f, 7.0f, 2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 4.0f, 7.0f, 2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 6.0f, -1.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 12.0f, 0.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 1.0f, 16.0f, 0.0f), 1.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 10.0f, 0.0f), 14.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(22.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT4 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -7.0f, 2.0f, 3.0f), 4.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 5.0f, 2.0f, -6.0f), 4.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 6.0f, 2.0f, 6.0f), 3.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 1.0f, -2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 1.0f, 1.0f, -7.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -4.0f, 10.0f, 3.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 1.0f, 11.0f, 7.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 11.0f, -3.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 17.0f, 1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 23.0f, -1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 12.0f, 0.0f), 20.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(30.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT5 ) // gravity root ?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root4.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("root5.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(-5.0f, 28.0f, -4.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationX(1, -30.0f*Math::PI/180.0f);
|
|
|
|
|
obj->SetPartRotationZ(1, 20.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -7.0f, 2.0f, 3.0f), 4.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 5.0f, 2.0f, -6.0f), 4.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 6.0f, 2.0f, 6.0f), 3.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 1.0f, -2.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 1.0f, 1.0f, -7.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -4.0f, 10.0f, 3.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 1.0f, 11.0f, 7.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 11.0f, -3.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 17.0f, 1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -3.0f, 23.0f, -1.0f), 2.0f, SOUND_BOUMv, 0.15f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 12.0f, 0.0f), 20.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(30.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a small home.
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateHome(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_HOME1 )
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("home1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(1.3f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f, SOUND_BOUMs, 0.25f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 6.0f, 0.0f), 11.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(16.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates ruin placed on the ground.
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateRuin(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
float height = params.height;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
|
|
|
|
|
|
|
|
|
std::string name;
|
|
|
|
|
if ( type == OBJECT_RUINmobilew1 ) name = "ruin1.mod";
|
|
|
|
|
if ( type == OBJECT_RUINmobilew2 ) name = "ruin1.mod";
|
|
|
|
|
if ( type == OBJECT_RUINmobilet1 ) name = "ruin2.mod";
|
|
|
|
|
if ( type == OBJECT_RUINmobilet2 ) name = "ruin2.mod";
|
|
|
|
|
if ( type == OBJECT_RUINmobiler1 ) name = "ruin3.mod";
|
|
|
|
|
if ( type == OBJECT_RUINmobiler2 ) name = "ruin3.mod";
|
|
|
|
|
if ( type == OBJECT_RUINfactory ) name = "ruin4.mod";
|
|
|
|
|
if ( type == OBJECT_RUINdoor ) name = "ruin5.mod";
|
|
|
|
|
if ( type == OBJECT_RUINsupport ) name = "ruin6.mod";
|
|
|
|
|
if ( type == OBJECT_RUINradar ) name = "ruin7.mod";
|
|
|
|
|
if ( type == OBJECT_RUINconvert ) name = "ruin8.mod";
|
|
|
|
|
if ( type == OBJECT_RUINbase ) name = "ruin9.mod";
|
|
|
|
|
if ( type == OBJECT_RUINhead ) name = "ruin10.mod";
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference(name, false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilew1 ) // vehicle had wheels?
|
|
|
|
|
{
|
|
|
|
|
// Creates the right-back wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(6, rank);
|
|
|
|
|
obj->SetObjectParent(6, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(6, Math::Vector(-3.0f, 1.8f, -4.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationX(6, -Math::PI/2.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
// Creates the left-back wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(7, rank);
|
|
|
|
|
obj->SetObjectParent(7, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(7, Math::Vector(-3.0f, 1.0f, 3.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(7, Math::PI-0.3f);
|
|
|
|
|
obj->SetPartRotationX(7, -0.3f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
// Creates the right-front wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(8, rank);
|
|
|
|
|
obj->SetObjectParent(8, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(8, Math::Vector(2.0f, 1.6f, -3.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(8, 0.3f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
// Creates the left-front wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(9, rank);
|
|
|
|
|
obj->SetObjectParent(9, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(9, Math::Vector(2.0f, 1.0f, 3.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(9, Math::PI-0.2f);
|
|
|
|
|
obj->SetPartRotationX(9, 0.2f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.8f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(4.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilew2 ) // vehicle has wheels?
|
|
|
|
|
{
|
|
|
|
|
// Creates the left-back wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(7, rank);
|
|
|
|
|
obj->SetObjectParent(7, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(7, Math::Vector(-3.0f, 1.0f, 3.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(7, Math::PI+0.3f);
|
|
|
|
|
obj->SetPartRotationX(7, 0.4f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
// Creates the left-front wheel.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(9, rank);
|
|
|
|
|
obj->SetObjectParent(9, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin1w.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(9, Math::Vector(2.0f, 1.0f, 3.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(9, Math::PI+0.3f);
|
|
|
|
|
obj->SetPartRotationX(9, -0.3f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.8f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(4.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilet1 ) // vehicle have caterpillars?
|
|
|
|
|
{
|
|
|
|
|
// Creates the cannon.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
|
|
|
|
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("ruin2c.mod", false, rank, obj->GetTeam());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(3.0f, 5.0f, -2.5f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationX(1, -Math::PI*0.85f);
|
|
|
|
|
obj->SetPartRotationY(1, -0.4f);
|
|
|
|
|
obj->SetPartRotationZ(1, -0.1f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(1.0f, 2.8f, -1.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(1.0f, 5.0f, -1.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilet2 ) // vehicle have caterpillars?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.8f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobiler1 ) // vehicle skating?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(1.0f, 2.8f, -1.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(1.0f, 5.0f, -1.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(5.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobiler2 ) // vehicle skating?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 1.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 5.0f, 0.0f), 10.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINfactory ) // factory ?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 9.0f, 1.0f, -11.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 2.0f, -11.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 4.0f, -10.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-12.0f, 11.0f, -4.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 4.0f, -2.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 8.0f, 3.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 2.0f, 4.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 2.0f, 10.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -4.0f, 0.0f, 10.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 18.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(20.0f, 0.7f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINdoor ) // converter holder?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 6.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINsupport ) // radar holder?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 4.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(3.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINradar ) // radar base?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 6.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(6.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINconvert ) // converter?
|
|
|
|
|
{
|
|
|
|
|
m_terrain->AddBuildingLevel(pos, 7.0f, 9.0f, 1.0f, 0.5f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 0.0f, 4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-10.0f, 0.0f, -4.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
//? obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(-3.0f, 0.0f, 0.0f), 14.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINbase ) // base?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 15.0f, 0.0f),28.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 17.0f, 6.0f, 42.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 17.0f, 17.0f, 42.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-17.0f, 6.0f, 42.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-17.0f, 17.0f, 42.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-42.0f, 6.0f, 17.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-42.0f, 17.0f, 17.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-42.0f, 6.0f, -17.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-42.0f, 17.0f, -17.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-17.0f, 6.0f, -42.0f), 6.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-17.0f, 10.0f, -42.0f), 4.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 15.0f, 13.0f, -34.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 31.0f, 15.0f, -13.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 21.0f, 8.0f, -39.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 26.0f, 8.0f, -33.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 48.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(40.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINhead ) // base cap?
|
|
|
|
|
{
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 13.0f, 0.0f),20.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, -8.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f,-16.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f,-22.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-21.0f, 7.0f, 9.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -9.0f, 7.0f, 21.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 21.0f, 7.0f, 9.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 9.0f, 7.0f, 21.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-21.0f, 7.0f, -9.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( -9.0f, 7.0f, -21.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 21.0f, 7.0f, -9.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 9.0f, 7.0f, -21.0f), 8.0f, SOUND_BOUMm, 0.45f));
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 0.0f, 0.0f), 35.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(30.0f, 1.0f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); //to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetFloorHeight(0.0f);
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type != OBJECT_RUINfactory &&
|
|
|
|
|
type != OBJECT_RUINconvert &&
|
|
|
|
|
type != OBJECT_RUINbase )
|
|
|
|
|
{
|
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += height;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); //to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilew1 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 0.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-0.1f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilew2 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 1.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-0.9f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()-0.1f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilet1 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 0.9f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-0.3f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobilet2 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 1.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-0.3f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()+0.8f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobiler1 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += 4.0f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-Math::PI*0.6f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()-0.2f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINmobiler2 )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += 2.0f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()-0.1f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()-0.3f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINdoor )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 0.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()-0.1f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINsupport )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += 0.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
//? angle = GetRotationY()+0.1f;
|
|
|
|
|
//? obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()+0.1f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()+0.1f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINradar )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 0.5f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()+0.15f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationZ()+0.1f;
|
|
|
|
|
obj->SetRotationZ(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINconvert )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 1.0f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINbase )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y -= 1.0f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()+0.15f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_RUINhead )
|
|
|
|
|
{
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-06-20 17:27:43 +00:00
|
|
|
|
pos.y += 8.0f;
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-14 19:29:13 +00:00
|
|
|
|
angle = obj->GetRotationX()+Math::PI*0.4f;
|
|
|
|
|
obj->SetRotationX(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a gadget apollo.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateApollo(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_APOLLO1 ) // LEM ?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apollol1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
|
|
|
|
obj->SetScale(1.2f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
for (int i=0 ; i<4 ; i++ ) // creates feet
|
|
|
|
|
{
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(i+1, rank);
|
|
|
|
|
obj->SetObjectParent(i+1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apollol2.mod", false, rank, obj->GetTeam());
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(i+1, Math::PI/2.0f*i);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(5, rank);
|
|
|
|
|
obj->SetObjectParent(5, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apollol3.mod", false, rank, obj->GetTeam()); // ladder
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
//? m_terrain->AddBuildingLevel(pos, 10.0f, 13.0f, 12.0f, 0.0f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 4.0f, 0.0f), 9.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 11.0f, 5.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-11.0f, 5.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 5.0f, -11.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 5.0f, 11.0f), 3.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-11 09:35:20 +00:00
|
|
|
|
obj->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 9.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(16.0f, 0.5f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_APOLLO2 ) // jeep
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); //it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj1.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
// Wheels.
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj4.mod", false, rank, obj->GetTeam()); // wheel
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(-5.75f, 1.65f, -5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(2, rank);
|
|
|
|
|
obj->SetObjectParent(2, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj4.mod", false, rank, obj->GetTeam()); // wheel
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(2, Math::Vector(-5.75f, 1.65f, 5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(3, rank);
|
|
|
|
|
obj->SetObjectParent(3, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj4.mod", false, rank, obj->GetTeam()); // wheel
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(3, Math::Vector(5.75f, 1.65f, -5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(4, rank);
|
|
|
|
|
obj->SetObjectParent(4, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj4.mod", false, rank, obj->GetTeam()); // wheel
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(4, Math::Vector(5.75f, 1.65f, 5.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
// Accessories:
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(5, rank);
|
|
|
|
|
obj->SetObjectParent(5, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj2.mod", false, rank, obj->GetTeam()); // antenna
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(5, Math::Vector(5.5f, 8.8f, 2.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(5, -120.0f*Math::PI/180.0f);
|
|
|
|
|
obj->SetPartRotationZ(5, 45.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(6, rank);
|
|
|
|
|
obj->SetObjectParent(6, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj3.mod", false, rank, obj->GetTeam()); // camera
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(6, Math::Vector(5.5f, 2.8f, -2.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(6, 30.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 3.0f, 2.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(-3.0f, 2.0f, 0.0f), 5.0f, SOUND_BOUMm, 0.45f));
|
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector( 7.0f, 9.0f, 2.0f), 2.0f, SOUND_BOUMm, 0.20f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->CreateShadowCircle(7.0f, 0.8f);
|
|
|
|
|
|
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_APOLLO3 ) // flag?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apollof.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
2015-07-10 20:11:22 +00:00
|
|
|
|
obj->SetJostlingSphere(Math::Sphere(Math::Vector(0.0f, 4.0f, 0.0f), 1.0f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(2.0f, 0.3f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_APOLLO4 ) // module?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apollom.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 2.0f, 0.0f), 2.0f, SOUND_BOUMm, 0.45f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(5.0f, 0.8f);
|
|
|
|
|
|
|
|
|
|
obj->FloorAdjust();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_APOLLO5 ) // antenna?
|
|
|
|
|
{
|
|
|
|
|
int rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object
|
|
|
|
|
obj->SetObjectRank(0, rank);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloa.mod", false, rank, obj->GetTeam());
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos);
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetRotationY(angle);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->SetFloorHeight(0.0f);
|
|
|
|
|
|
|
|
|
|
rank = m_engine->CreateObject();
|
|
|
|
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT);
|
|
|
|
|
obj->SetObjectRank(1, rank);
|
|
|
|
|
obj->SetObjectParent(1, 0);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
m_oldModelManager->AddModelReference("apolloj2.mod", false, rank, obj->GetTeam()); // antenna
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPartPosition(1, Math::Vector(0.0f, 5.0f, 0.0f));
|
2015-07-14 19:29:13 +00:00
|
|
|
|
obj->SetPartRotationY(1, -120.0f*Math::PI/180.0f);
|
|
|
|
|
obj->SetPartRotationZ(1, 45.0f*Math::PI/180.0f);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-10 07:26:38 +00:00
|
|
|
|
obj->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 3.0f, SOUND_BOUMm, 0.35f));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
obj->CreateShadowCircle(3.0f, 0.7f);
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
AddObjectAuto(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-12 09:01:16 +00:00
|
|
|
|
pos = obj->GetPosition();
|
2015-07-13 21:19:46 +00:00
|
|
|
|
obj->SetPosition(pos); // to display the shadows immediately
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates a vehicle traveling any pose on the floor.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateVehicle(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
float power = params.power;
|
|
|
|
|
bool trainer = params.trainer;
|
|
|
|
|
bool toy = params.toy;
|
|
|
|
|
int option = params.option;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
|
|
|
|
obj->SetOption(option);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_TOTO )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto motion = MakeUnique<CMotionToto>(obj.get());
|
2015-07-11 17:48:37 +00:00
|
|
|
|
motion->Create(pos, angle, type, 1.0f, m_oldModelManager);
|
2015-08-13 08:49:26 +00:00
|
|
|
|
obj->SetMovable(std::move(motion), nullptr);
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_HUMAN ||
|
|
|
|
|
type == OBJECT_TECH )
|
|
|
|
|
{
|
|
|
|
|
obj->SetTrainer(false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
obj->SetTrainer(trainer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj->SetToy(toy);
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto physics = MakeUnique<CPhysics>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
std::unique_ptr<CMotion> motion;
|
2015-06-20 17:27:43 +00:00
|
|
|
|
if ( type == OBJECT_HUMAN ||
|
|
|
|
|
type == OBJECT_TECH )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionHuman>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
else if ( type == OBJECT_CONTROLLER )
|
|
|
|
|
{
|
2015-08-10 14:37:03 +00:00
|
|
|
|
motion = MakeUnique<CMotionLevelController>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionVehicle>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
2015-06-22 19:58:58 +00:00
|
|
|
|
motion->SetPhysics(physics.get());
|
|
|
|
|
physics->SetMotion(motion.get());
|
|
|
|
|
|
2015-07-11 17:48:37 +00:00
|
|
|
|
motion->Create(pos, angle, type, power, m_oldModelManager);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-08-13 08:49:26 +00:00
|
|
|
|
obj->SetProgrammable();
|
|
|
|
|
obj->SetMovable(std::move(motion), std::move(physics));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates an insect lands on any ground.
|
|
|
|
|
|
2015-06-21 09:16:09 +00:00
|
|
|
|
CObjectUPtr CObjectFactory::CreateInsect(const ObjectCreateParams& params)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-21 09:16:09 +00:00
|
|
|
|
Math::Vector pos = params.pos;
|
|
|
|
|
float angle = params.angle;
|
|
|
|
|
ObjectType type = params.type;
|
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto obj = MakeUnique<COldObject>(params.id);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
obj->SetType(type);
|
2015-07-22 10:45:50 +00:00
|
|
|
|
obj->SetTeam(params.team);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-17 17:22:31 +00:00
|
|
|
|
auto physics = MakeUnique<CPhysics>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-06-22 19:58:58 +00:00
|
|
|
|
std::unique_ptr<CMotion> motion;
|
2015-06-20 17:27:43 +00:00
|
|
|
|
if ( type == OBJECT_MOTHER )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionQueen>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ANT )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionAnt>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_SPIDER )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionSpider>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_BEE )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionBee>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_WORM )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
motion = MakeUnique<CMotionWorm>(obj.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
2015-06-22 19:58:58 +00:00
|
|
|
|
assert(motion != nullptr);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-06-22 19:58:58 +00:00
|
|
|
|
physics->SetMotion(motion.get());
|
|
|
|
|
motion->SetPhysics(physics.get());
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-11 17:48:37 +00:00
|
|
|
|
motion->Create(pos, angle, type, 0.0f, m_oldModelManager);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-08-13 08:49:26 +00:00
|
|
|
|
obj->SetProgrammable();
|
|
|
|
|
obj->SetMovable(std::move(motion), std::move(physics));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
return std::move(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Creates all sub-objects for managing the object.
|
|
|
|
|
|
2015-07-02 21:48:30 +00:00
|
|
|
|
void CObjectFactory::AddObjectAuto(COldObject* obj)
|
2015-06-20 17:27:43 +00:00
|
|
|
|
{
|
2015-06-22 19:58:58 +00:00
|
|
|
|
std::unique_ptr<CAuto> objAuto;
|
2015-06-20 17:27:43 +00:00
|
|
|
|
|
|
|
|
|
auto type = obj->GetType();
|
|
|
|
|
|
|
|
|
|
if ( type == OBJECT_BASE )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoBase>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_PORTICO )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoPortico>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_DERRICK )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoDerrick>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_FACTORY )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoFactory>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_REPAIR )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoRepair>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_DESTROYER )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoDestroyer>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_STATION )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoPowerStation>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_CONVERT )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoConvert>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_TOWER )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoTower>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_RESEARCH )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoResearch>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_RADAR )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoRadar>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ENERGY )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoPowerPlant>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_LABO )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoLabo>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_NUCLEAR )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoNuclearPlant>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_PARA )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoPowerCaptor>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_SAFE )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoVault>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_HUSTON )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoHouston>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_EGG )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoEgg>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_NEST )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoNest>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_ROOT5 )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoRoot>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_MUSHROOM2 )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoMush>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
if ( type == OBJECT_FLAGb ||
|
|
|
|
|
type == OBJECT_FLAGr ||
|
|
|
|
|
type == OBJECT_FLAGg ||
|
|
|
|
|
type == OBJECT_FLAGy ||
|
|
|
|
|
type == OBJECT_FLAGv )
|
|
|
|
|
{
|
2015-07-17 17:22:31 +00:00
|
|
|
|
objAuto = MakeUnique<CAutoFlag>(obj);
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (objAuto != nullptr)
|
|
|
|
|
{
|
|
|
|
|
objAuto->Init();
|
2015-06-22 19:58:58 +00:00
|
|
|
|
obj->SetAuto(std::move(objAuto));
|
2015-06-20 17:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|