2009-05-20 01:30:46 +01:00
|
|
|
// Cyphesis Online RPG Server and AI Engine
|
|
|
|
|
// Copyright (C) 2009 Alistair Riddoch
|
|
|
|
|
//
|
|
|
|
|
// 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 2 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, write to the Free Software Foundation,
|
|
|
|
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
|
|
|
|
|
|
// $Id$
|
|
|
|
|
|
2011-02-15 09:30:46 +00:00
|
|
|
#ifdef NDEBUG
|
|
|
|
|
#undef NDEBUG
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef DEBUG
|
|
|
|
|
#define DEBUG
|
|
|
|
|
#endif
|
|
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
#include "TestBase.h"
|
|
|
|
|
|
2009-05-20 01:30:46 +01:00
|
|
|
#include "rulesets/MemMap.h"
|
2010-04-20 01:35:49 +01:00
|
|
|
|
|
|
|
|
#include "rulesets/MemEntity.h"
|
2009-05-20 01:30:46 +01:00
|
|
|
#include "rulesets/Script.h"
|
|
|
|
|
|
2010-04-20 01:35:49 +01:00
|
|
|
#include "common/Inheritance.h"
|
|
|
|
|
#include "common/log.h"
|
|
|
|
|
#include "common/TypeNode.h"
|
|
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
#include <Atlas/Objects/Anonymous.h>
|
2009-05-20 01:30:46 +01:00
|
|
|
#include <Atlas/Objects/Operation.h>
|
|
|
|
|
#include <Atlas/Objects/SmartPtr.h>
|
|
|
|
|
|
2010-04-20 01:35:49 +01:00
|
|
|
#include <cstdlib>
|
|
|
|
|
|
2009-05-20 01:30:46 +01:00
|
|
|
#include <cassert>
|
|
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
using Atlas::Objects::Entity::Anonymous;
|
2013-01-17 22:38:28 +00:00
|
|
|
using Atlas::Objects::Root;
|
2013-01-17 16:54:21 +00:00
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
class MemMaptest : public Cyphesis::TestBase
|
|
|
|
|
{
|
|
|
|
|
private:
|
2013-01-17 22:38:28 +00:00
|
|
|
TypeNode * m_sampleType;
|
2013-01-17 14:14:23 +00:00
|
|
|
Script * m_script;
|
|
|
|
|
MemMap * m_memMap;
|
2013-01-17 22:38:28 +00:00
|
|
|
|
|
|
|
|
static std::string m_Script_hook_called;
|
|
|
|
|
static LocatedEntity * m_Script_hook_called_with;
|
2009-05-20 01:30:46 +01:00
|
|
|
public:
|
2013-01-17 14:14:23 +00:00
|
|
|
MemMaptest();
|
2009-05-20 01:30:46 +01:00
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
void setup();
|
|
|
|
|
void teardown();
|
|
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
void test_addId();
|
|
|
|
|
void test_sendLooks();
|
|
|
|
|
void test_del();
|
|
|
|
|
void test_addEntity();
|
2013-01-17 22:38:28 +00:00
|
|
|
void test_addEntity_script();
|
|
|
|
|
void test_addEntity_script_hook();
|
2013-01-17 16:54:21 +00:00
|
|
|
void test_readEntity();
|
2013-01-17 22:38:28 +00:00
|
|
|
void test_readEntity_type();
|
|
|
|
|
void test_readEntity_type_nonexist();
|
2013-01-18 14:02:33 +00:00
|
|
|
void test_findByLoc();
|
|
|
|
|
void test_findByLoc_results();
|
|
|
|
|
void test_findByLoc_invalid();
|
|
|
|
|
void test_findByLoc_consistency_check();
|
2013-01-17 22:38:28 +00:00
|
|
|
|
|
|
|
|
static void Script_hook_called(const std::string &, LocatedEntity *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
std::string MemMaptest::m_Script_hook_called;
|
|
|
|
|
LocatedEntity * MemMaptest::m_Script_hook_called_with = 0;
|
|
|
|
|
|
|
|
|
|
void MemMaptest::Script_hook_called(const std::string & hook,
|
|
|
|
|
LocatedEntity * ent)
|
|
|
|
|
{
|
|
|
|
|
m_Script_hook_called = hook;
|
|
|
|
|
m_Script_hook_called_with = ent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TestScript : public Script
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual void hook(const std::string & function, LocatedEntity * entity);
|
2009-05-20 01:30:46 +01:00
|
|
|
};
|
|
|
|
|
|
2013-01-17 22:38:28 +00:00
|
|
|
void TestScript::hook(const std::string & function, LocatedEntity * entity)
|
|
|
|
|
{
|
|
|
|
|
MemMaptest::Script_hook_called(function, entity);
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
MemMaptest::MemMaptest()
|
|
|
|
|
{
|
2013-01-17 16:54:21 +00:00
|
|
|
ADD_TEST(MemMaptest::test_addId);
|
|
|
|
|
ADD_TEST(MemMaptest::test_sendLooks);
|
|
|
|
|
ADD_TEST(MemMaptest::test_del);
|
|
|
|
|
ADD_TEST(MemMaptest::test_addEntity);
|
2013-01-17 22:38:28 +00:00
|
|
|
ADD_TEST(MemMaptest::test_addEntity_script);
|
|
|
|
|
ADD_TEST(MemMaptest::test_addEntity_script_hook);
|
2013-01-17 16:54:21 +00:00
|
|
|
ADD_TEST(MemMaptest::test_readEntity);
|
2013-01-17 22:38:28 +00:00
|
|
|
ADD_TEST(MemMaptest::test_readEntity_type);
|
|
|
|
|
ADD_TEST(MemMaptest::test_readEntity_type_nonexist);
|
2013-01-18 14:02:33 +00:00
|
|
|
ADD_TEST(MemMaptest::test_findByLoc);
|
|
|
|
|
ADD_TEST(MemMaptest::test_findByLoc_results);
|
|
|
|
|
ADD_TEST(MemMaptest::test_findByLoc_invalid);
|
|
|
|
|
ADD_TEST(MemMaptest::test_findByLoc_consistency_check);
|
2013-01-17 14:14:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::setup()
|
|
|
|
|
{
|
2013-01-17 22:38:28 +00:00
|
|
|
m_Script_hook_called = "";
|
|
|
|
|
m_Script_hook_called_with = 0;
|
|
|
|
|
|
|
|
|
|
Root type_desc;
|
|
|
|
|
type_desc->setId("sample_type");
|
|
|
|
|
m_sampleType = Inheritance::instance().addChild(type_desc);
|
|
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
m_script = 0;
|
|
|
|
|
m_memMap = new MemMap(m_script);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::teardown()
|
2009-05-20 01:30:46 +01:00
|
|
|
{
|
2013-01-17 14:14:23 +00:00
|
|
|
delete m_memMap;
|
2013-01-17 22:38:28 +00:00
|
|
|
Inheritance::clear();
|
2013-01-17 14:14:23 +00:00
|
|
|
}
|
2009-05-20 01:30:46 +01:00
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
void MemMaptest::test_addId()
|
2013-01-17 14:14:23 +00:00
|
|
|
{
|
|
|
|
|
m_memMap->addId("2", 2);
|
2013-01-17 16:54:21 +00:00
|
|
|
}
|
2009-05-20 01:30:46 +01:00
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
void MemMaptest::test_sendLooks()
|
|
|
|
|
{
|
2009-05-20 01:30:46 +01:00
|
|
|
OpVector res;
|
2013-01-17 14:14:23 +00:00
|
|
|
m_memMap->sendLooks(res);
|
2013-01-17 16:54:21 +00:00
|
|
|
}
|
2009-05-20 01:30:46 +01:00
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
void MemMaptest::test_del()
|
|
|
|
|
{
|
2013-01-17 14:14:23 +00:00
|
|
|
m_memMap->del("2");
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
void MemMaptest::test_addEntity()
|
|
|
|
|
{
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
ASSERT_NULL(m_memMap->get(new_id));
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
m_memMap->addEntity(ent);
|
|
|
|
|
|
|
|
|
|
ASSERT_NOT_NULL(m_memMap->get(new_id));
|
2013-01-17 22:38:28 +00:00
|
|
|
ASSERT_NULL(m_Script_hook_called_with);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_addEntity_script()
|
|
|
|
|
{
|
|
|
|
|
m_script = new TestScript;
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
ASSERT_NULL(m_memMap->get(new_id));
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
m_memMap->addEntity(ent);
|
|
|
|
|
|
|
|
|
|
ASSERT_NOT_NULL(m_memMap->get(new_id));
|
|
|
|
|
ASSERT_NULL(m_Script_hook_called_with);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_addEntity_script_hook()
|
|
|
|
|
{
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
const std::string test_add_hook_name("test_add_hook");
|
|
|
|
|
|
|
|
|
|
m_script = new TestScript;
|
|
|
|
|
m_memMap->m_addHooks.push_back(test_add_hook_name);
|
|
|
|
|
|
|
|
|
|
ASSERT_NULL(m_memMap->get(new_id));
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
m_memMap->addEntity(ent);
|
|
|
|
|
|
|
|
|
|
ASSERT_NOT_NULL(m_memMap->get(new_id));
|
|
|
|
|
ASSERT_NOT_NULL(m_Script_hook_called_with);
|
|
|
|
|
ASSERT_EQUAL(m_Script_hook_called, test_add_hook_name);
|
2013-01-17 16:54:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_readEntity()
|
|
|
|
|
{
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
|
2013-01-17 22:38:28 +00:00
|
|
|
Anonymous data;
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
|
|
|
|
|
m_memMap->readEntity(ent, data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_readEntity_type()
|
|
|
|
|
{
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
|
2013-01-17 16:54:21 +00:00
|
|
|
Anonymous data;
|
|
|
|
|
data->setParents(std::list<std::string>(1, "sample_type"));
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
|
|
|
|
|
m_memMap->readEntity(ent, data);
|
2013-01-17 22:38:28 +00:00
|
|
|
|
|
|
|
|
ASSERT_NOT_EQUAL(ent->getType(), MemMap::m_entity_type);
|
|
|
|
|
ASSERT_EQUAL(ent->getType(), m_sampleType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_readEntity_type_nonexist()
|
|
|
|
|
{
|
|
|
|
|
const std::string new_id("3");
|
|
|
|
|
|
|
|
|
|
Anonymous data;
|
|
|
|
|
data->setParents(std::list<std::string>(1, "non_sample_type"));
|
|
|
|
|
|
|
|
|
|
MemEntity * ent = new MemEntity(new_id, 3);
|
|
|
|
|
ent->setType(MemMap::m_entity_type);
|
|
|
|
|
|
|
|
|
|
m_memMap->readEntity(ent, data);
|
|
|
|
|
|
|
|
|
|
ASSERT_EQUAL(ent->getType(), MemMap::m_entity_type);
|
|
|
|
|
ASSERT_NOT_EQUAL(ent->getType(), m_sampleType);
|
2013-01-17 16:54:21 +00:00
|
|
|
}
|
|
|
|
|
|
2013-01-18 14:02:33 +00:00
|
|
|
void MemMaptest::test_findByLoc()
|
|
|
|
|
{
|
|
|
|
|
MemEntity * tlve = new MemEntity("3", 3);
|
|
|
|
|
tlve->setVisible();
|
|
|
|
|
m_memMap->m_entities[3] = tlve;
|
|
|
|
|
tlve->m_contains = new LocatedEntitySet;
|
|
|
|
|
|
|
|
|
|
MemEntity * e4 = new MemEntity("4", 4);
|
|
|
|
|
e4->setVisible();
|
|
|
|
|
e4->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[4] = tlve;
|
|
|
|
|
e4->m_location.m_loc = tlve;
|
|
|
|
|
e4->m_location.m_pos = Point3D(1,1,0);
|
|
|
|
|
tlve->m_contains->insert(e4);
|
|
|
|
|
|
|
|
|
|
MemEntity * e5 = new MemEntity("5", 5);
|
|
|
|
|
e5->setVisible();
|
|
|
|
|
e5->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[5] = tlve;
|
|
|
|
|
e5->m_location.m_loc = tlve;
|
|
|
|
|
e5->m_location.m_pos = Point3D(2,2,0);
|
|
|
|
|
tlve->m_contains->insert(e5);
|
|
|
|
|
|
|
|
|
|
Location find_here(tlve);
|
|
|
|
|
|
|
|
|
|
// Radius too small
|
2013-01-18 14:48:11 +00:00
|
|
|
EntityVector res = m_memMap->findByLocation(find_here,
|
|
|
|
|
1.f,
|
|
|
|
|
"sample_type");
|
2013-01-18 14:02:33 +00:00
|
|
|
|
|
|
|
|
ASSERT_TRUE(res.empty());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_findByLoc_results()
|
|
|
|
|
{
|
|
|
|
|
MemEntity * tlve = new MemEntity("3", 3);
|
|
|
|
|
tlve->setVisible();
|
|
|
|
|
m_memMap->m_entities[3] = tlve;
|
|
|
|
|
tlve->m_contains = new LocatedEntitySet;
|
|
|
|
|
|
|
|
|
|
MemEntity * e4 = new MemEntity("4", 4);
|
|
|
|
|
e4->setVisible();
|
|
|
|
|
e4->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[4] = tlve;
|
|
|
|
|
e4->m_location.m_loc = tlve;
|
|
|
|
|
e4->m_location.m_pos = Point3D(1,1,0);
|
|
|
|
|
tlve->m_contains->insert(e4);
|
|
|
|
|
|
|
|
|
|
MemEntity * e5 = new MemEntity("5", 5);
|
|
|
|
|
e5->setVisible();
|
|
|
|
|
e5->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[5] = tlve;
|
|
|
|
|
e5->m_location.m_loc = tlve;
|
|
|
|
|
e5->m_location.m_pos = Point3D(2,2,0);
|
|
|
|
|
tlve->m_contains->insert(e5);
|
|
|
|
|
|
|
|
|
|
Location find_here(tlve);
|
|
|
|
|
|
2013-01-18 14:48:11 +00:00
|
|
|
EntityVector res = m_memMap->findByLocation(find_here,
|
|
|
|
|
5.f,
|
|
|
|
|
"sample_type");
|
2013-01-18 14:02:33 +00:00
|
|
|
|
|
|
|
|
ASSERT_TRUE(!res.empty());
|
|
|
|
|
ASSERT_EQUAL(res.size(), 2u);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_findByLoc_invalid()
|
|
|
|
|
{
|
|
|
|
|
MemEntity * tlve = new MemEntity("3", 3);
|
|
|
|
|
tlve->setVisible();
|
|
|
|
|
m_memMap->m_entities[3] = tlve;
|
|
|
|
|
tlve->m_contains = new LocatedEntitySet;
|
|
|
|
|
|
|
|
|
|
MemEntity * e4 = new MemEntity("4", 4);
|
|
|
|
|
e4->setVisible();
|
|
|
|
|
e4->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[4] = tlve;
|
|
|
|
|
e4->m_location.m_loc = tlve;
|
|
|
|
|
e4->m_location.m_pos = Point3D(1,1,0);
|
|
|
|
|
tlve->m_contains->insert(e4);
|
|
|
|
|
|
|
|
|
|
MemEntity * e5 = new MemEntity("5", 5);
|
|
|
|
|
e5->setVisible();
|
|
|
|
|
e5->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[5] = tlve;
|
|
|
|
|
e5->m_location.m_loc = tlve;
|
|
|
|
|
e5->m_location.m_pos = Point3D(2,2,0);
|
|
|
|
|
tlve->m_contains->insert(e5);
|
|
|
|
|
|
|
|
|
|
// Look in a location where these is nothing - no contains at all
|
|
|
|
|
Location find_here(e4);
|
|
|
|
|
|
2013-01-18 14:48:11 +00:00
|
|
|
EntityVector res = m_memMap->findByLocation(find_here,
|
|
|
|
|
5.f,
|
|
|
|
|
"sample_type");
|
2013-01-18 14:02:33 +00:00
|
|
|
|
|
|
|
|
ASSERT_TRUE(res.empty());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemMaptest::test_findByLoc_consistency_check()
|
|
|
|
|
{
|
|
|
|
|
MemEntity * tlve = new MemEntity("3", 3);
|
|
|
|
|
tlve->setVisible();
|
|
|
|
|
tlve->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[3] = tlve;
|
|
|
|
|
tlve->m_contains = new LocatedEntitySet;
|
|
|
|
|
|
|
|
|
|
MemEntity * e4 = new MemEntity("4", 4);
|
|
|
|
|
e4->setVisible();
|
|
|
|
|
e4->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[4] = tlve;
|
|
|
|
|
e4->m_location.m_loc = tlve;
|
|
|
|
|
e4->m_location.m_pos = Point3D(1,1,0);
|
|
|
|
|
tlve->m_contains->insert(e4);
|
|
|
|
|
|
|
|
|
|
MemEntity * e5 = new MemEntity("5", 5);
|
|
|
|
|
e5->setVisible();
|
|
|
|
|
e5->setType(m_sampleType);
|
|
|
|
|
m_memMap->m_entities[5] = tlve;
|
|
|
|
|
e5->m_location.m_loc = tlve;
|
|
|
|
|
e5->m_location.m_pos = Point3D(2,2,0);
|
|
|
|
|
tlve->m_contains->insert(e5);
|
|
|
|
|
|
|
|
|
|
// Duplicated of tlve. Same ID, but not the same entity as in
|
|
|
|
|
// memmap. This will fail, but via a different path depending on
|
|
|
|
|
// DEBUG/NDEBUG. In debug build, the check in findByLoc will fail
|
|
|
|
|
// resulting in early return. In ndebug build, it will return empty
|
|
|
|
|
// by a longer path, as e3_dup contains no other entities.
|
|
|
|
|
MemEntity * e3_dup = new MemEntity("3", 3);
|
|
|
|
|
e3_dup->setType(m_sampleType);
|
|
|
|
|
e3_dup->m_contains = new LocatedEntitySet;
|
|
|
|
|
|
|
|
|
|
Location find_here(e3_dup);
|
|
|
|
|
|
2013-01-18 14:48:11 +00:00
|
|
|
EntityVector res = m_memMap->findByLocation(find_here,
|
|
|
|
|
5.f,
|
|
|
|
|
"sample_type");
|
2013-01-18 14:02:33 +00:00
|
|
|
|
|
|
|
|
ASSERT_TRUE(res.empty());
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
MemMaptest t;
|
2009-05-20 01:30:46 +01:00
|
|
|
|
2013-01-17 14:14:23 +00:00
|
|
|
return t.run();
|
2009-05-20 01:30:46 +01:00
|
|
|
}
|
2010-04-20 01:35:49 +01:00
|
|
|
|
|
|
|
|
// stubs
|
|
|
|
|
|
|
|
|
|
MemEntity::MemEntity(const std::string & id, long intId) :
|
2013-01-14 09:59:54 +00:00
|
|
|
LocatedEntity(id, intId), m_lastSeen(0.)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MemEntity::~MemEntity()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2012-12-04 20:39:35 +00:00
|
|
|
void MemEntity::externalOperation(const Operation & op, Link &)
|
2012-11-14 00:12:02 +00:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MemEntity::operation(const Operation &, OpVector &)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-24 22:23:01 +00:00
|
|
|
void MemEntity::destroy()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-04-20 01:35:49 +01:00
|
|
|
LocatedEntity::LocatedEntity(const std::string & id, long intId) :
|
|
|
|
|
Router(id, intId),
|
|
|
|
|
m_refCount(0), m_seq(0),
|
2013-01-14 09:59:54 +00:00
|
|
|
m_script(0), m_type(0), m_flags(0), m_contains(0)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LocatedEntity::~LocatedEntity()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool LocatedEntity::hasAttr(const std::string & name) const
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2011-09-29 17:36:26 +01:00
|
|
|
int LocatedEntity::getAttr(const std::string & name,
|
|
|
|
|
Atlas::Message::Element & attr) const
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
2011-09-29 17:36:26 +01:00
|
|
|
return -1;
|
2010-04-20 01:35:49 +01:00
|
|
|
}
|
|
|
|
|
|
2011-09-29 17:36:26 +01:00
|
|
|
int LocatedEntity::getAttrType(const std::string & name,
|
|
|
|
|
Atlas::Message::Element & attr,
|
|
|
|
|
int type) const
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
2011-09-29 17:36:26 +01:00
|
|
|
return -1;
|
2010-04-20 01:35:49 +01:00
|
|
|
}
|
|
|
|
|
|
2011-02-28 00:28:25 +00:00
|
|
|
PropertyBase * LocatedEntity::setAttr(const std::string & name,
|
|
|
|
|
const Atlas::Message::Element & attr)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
2011-02-28 00:28:25 +00:00
|
|
|
return 0;
|
2010-04-20 01:35:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const PropertyBase * LocatedEntity::getProperty(const std::string & name) const
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-17 10:17:07 +00:00
|
|
|
PropertyBase * LocatedEntity::modProperty(const std::string & name)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PropertyBase * LocatedEntity::setProperty(const std::string & name,
|
|
|
|
|
PropertyBase * prop)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LocatedEntity::installDelegate(int, const std::string &)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LocatedEntity::destroy()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Domain * LocatedEntity::getMovementDomain()
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LocatedEntity::sendWorld(const Operation & op)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-04-20 01:35:49 +01:00
|
|
|
void LocatedEntity::onContainered()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LocatedEntity::onUpdated()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LocatedEntity::merge(const Atlas::Message::MapType & ent)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Router::Router(const std::string & id, long intId) : m_id(id),
|
|
|
|
|
m_intId(intId)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Router::~Router()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Router::addToMessage(Atlas::Message::MapType & omap) const
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Router::addToEntity(const Atlas::Objects::Entity::RootEntity & ent) const
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-09-16 05:14:35 +01:00
|
|
|
Location::Location() : m_loc(0)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-18 14:02:33 +00:00
|
|
|
Location::Location(LocatedEntity * rf) : m_loc(rf)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-04-20 01:35:49 +01:00
|
|
|
int Location::readFromEntity(const Atlas::Objects::Entity::RootEntity & ent)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Inheritance * Inheritance::m_instance = NULL;
|
|
|
|
|
|
2012-09-18 08:49:50 +01:00
|
|
|
Inheritance::Inheritance() : noClass(0)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TypeNode * Inheritance::getType(const std::string & parent)
|
|
|
|
|
{
|
2013-01-17 22:38:28 +00:00
|
|
|
TypeNodeDict::const_iterator I = atlasObjects.find(parent);
|
|
|
|
|
if (I == atlasObjects.end()) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return I->second;
|
2010-04-20 01:35:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Script::Script()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// \brief Script destructor
|
|
|
|
|
Script::~Script()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Script::operation(const std::string & opname,
|
|
|
|
|
const Atlas::Objects::Operation::RootOperation & op,
|
|
|
|
|
OpVector & res)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Script::hook(const std::string & function, LocatedEntity * entity)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Inheritance & Inheritance::instance()
|
|
|
|
|
{
|
|
|
|
|
if (m_instance == NULL) {
|
|
|
|
|
m_instance = new Inheritance();
|
|
|
|
|
}
|
|
|
|
|
return *m_instance;
|
|
|
|
|
}
|
|
|
|
|
|
2013-01-17 22:38:28 +00:00
|
|
|
TypeNode * Inheritance::addChild(const Root & obj)
|
|
|
|
|
{
|
|
|
|
|
const std::string & child = obj->getId();
|
|
|
|
|
|
|
|
|
|
TypeNode * type = new TypeNode(child);
|
|
|
|
|
|
|
|
|
|
atlasObjects[child] = type;
|
|
|
|
|
|
|
|
|
|
return type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Inheritance::clear()
|
|
|
|
|
{
|
|
|
|
|
if (m_instance != NULL) {
|
|
|
|
|
delete m_instance;
|
|
|
|
|
m_instance = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-09-16 18:30:22 +01:00
|
|
|
TypeNode::TypeNode(const std::string & name) : m_name(name), m_parent(0)
|
2010-04-20 01:35:49 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float squareDistance(const Point3D & u, const Point3D & v)
|
|
|
|
|
{
|
|
|
|
|
return 1.f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void log(LogLevel lvl, const std::string & msg)
|
|
|
|
|
{
|
2013-01-18 14:02:33 +00:00
|
|
|
std::cout << msg << std::endl;
|
2010-04-20 01:35:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
long integerId(const std::string & id)
|
|
|
|
|
{
|
|
|
|
|
long intId = strtol(id.c_str(), 0, 10);
|
|
|
|
|
if (intId == 0 && id != "0") {
|
|
|
|
|
intId = -1L;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return intId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|