1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-07 03:12:36 +01:00
Commit Graph

266 Commits

Author SHA1 Message Date
Anonymous Maarten
eba262b789 rwengine: make Activity a std::unique_ptr
Should fix this memory leak:
==16721== 120 bytes in 5 blocks are definitely lost in loss record 187 of 264
==16721==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==16721==    by 0x8EBA26: DefaultAIController::update(float) (DefaultAIController.cpp:63)
==16721==    by 0x82ED5A: CharacterObject::tick(float) (CharacterObject.cpp:240)
==16721==    by 0x763630: RWGame::tick(float) (RWGame.cpp:506)
==16721==    by 0x763128: RWGame::run() (RWGame.cpp:420)
==16721==    by 0x750394: main (main.cpp:15)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
8175666092 rwengine: make AnimationBone a shared pointer
Should fix this memory leak:
==10780== 4,341,444 (269,712 direct, 4,071,732 indirect) bytes in 3,746 blocks are definitely lost in los
s record 2,652 of 2,654
==10780==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==10780==    by 0x8219B2: LoaderIFP::loadFromMemory(char*) (LoaderIFP.cpp:82)
==10780==    by 0x7C22C0: GameData::loadIFP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameData.cpp:506)
==10780==    by 0x7BD838: GameData::load() (GameData.cpp:59)
==10780==    by 0x75CD35: RWGame::RWGame(Logger&, int, char**) (RWGame.cpp:51)
==10780==    by 0x74CDE5: main (main.cpp:13)
==10780==
==10780== 6,516,576 (13,968 direct, 6,502,608 indirect) bytes in 194 blocks are definitely lost in loss record 2,654 of 2,654
==10780==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==10780==    by 0x8219B2: LoaderIFP::loadFromMemory(char*) (LoaderIFP.cpp:82)
==10780==    by 0x7C22C0: GameData::loadIFP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameData.cpp:506)
==10780==    by 0x7E7ECC: GameWorld::loadCutscene(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameWorld.cpp:693)
==10780==    by 0x87453E: opcode_02e4(ScriptArguments const&, char const*) (GTA3ModuleImpl.inl:8245)
==10780==    by 0x8D8149: void script_bind::call_unpacked<0u, 2u, void>::call<void (*)(ScriptArguments const&, char const*), ScriptArguments const&, char const*>(void (*)(ScriptArguments const&, char const*), ScriptArguments const&, ScriptArguments const&, char const*&&) (ScriptModule.hpp:80)
==10780==    by 0x8D2765: void script_bind::call_unpacked<1u, 1u, void, char const*>::call<void (*)(ScriptArguments const&, char const*), ScriptArguments const&>(void (*)(ScriptArguments const&, char const*), ScriptArguments const&, ScriptArguments const&) (ScriptModule.hpp:90)
==10780==    by 0x8C7EFE: void script_bind::call_unpacked<2u, 0u, void, ScriptArguments const&, char const*>::call<void (*)(ScriptArguments const&, char const*)>(void (*)(ScriptArguments const&, char const*), ScriptArguments const&) (ScriptModule.hpp:90)
==10780==    by 0x8B5A05: void script_bind::binder<void, ScriptArguments const&, char const*>::call<void (*)(ScriptArguments const&, char const*)>(void (*)(ScriptArguments const&, char const*), ScriptArguments const&) (ScriptModule.hpp:104)
==10780==    by 0x8A2E3A: void script_bind::do_unpacked_call<void, ScriptArguments const&, char const*>(void (* const&)(ScriptArguments const&, char const*), ScriptArguments const&) (ScriptModule.hpp:137)
==10780==    by 0x893BB0: void ScriptModule::bind<void (*)(ScriptArguments const&, char const*)>(unsigned short, int, void (*)(ScriptArguments const&, char const*))::{lambda(ScriptArguments const&)#1}::operator()(ScriptArguments const&) const (ScriptModule.hpp:166)
==10780==    by 0x8B5A8D: std::_Function_handler<void (ScriptArguments const&), void ScriptModule::bind<void (*)(ScriptArguments const&, char const*)>(unsigned short, int, void (*)(ScriptArguments const&, char const*))::{lambda(ScriptArguments const&)#1}>::_M_invoke(std::_Any_data const&, ScriptArguments const&) (std_function.h:316)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
8e98cf2311 rwengine: Pass CharacterController to the CharacterObject constructor
The CharacterObject should remove the CharacterController upon
destruction.

Should fix this memory leak:
==31441== 480 (360 direct, 120 indirect) bytes in 5 blocks are definitely lost in loss record 2,038 of 2,723
==31441==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==31441==    by 0x7E2370: GameWorld::createPedestrian(unsigned short, glm::tvec3<float, (glm::precision)0> const&, glm::tquat<float, (glm::precision)0> const&, unsigned int) (GameWorld.cpp:334)
==31441==    by 0x8E2F01: TrafficDirector::populateNearby(ViewCamera const&, float, int) (TrafficDirector.cpp:164)
==31441==    by 0x7E1170: GameWorld::createTraffic(ViewCamera const&) (GameWorld.cpp:176)
==31441==    by 0x75C616: RWGame::tick(float) (RWGame.cpp:531)
==31441==    by 0x75BF18: RWGame::run() (RWGame.cpp:420)
==31441==    by 0x749184: main (main.cpp:15)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
c2da40d0a0 rwlib/rwengine: Use AnimationPtr instead of Animation*
Should fix these memory leaks:
==31441== 3,694,699 (17,248 direct, 3,677,451 indirect) bytes in 196 blocks are definitely lost in loss record 2,720 of 2,723
==31441==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==31441==    by 0x81D98E: LoaderIFP::loadFromMemory(char*) (LoaderIFP.cpp:69)
==31441==    by 0x7BE5D2: GameData::loadIFP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameData.cpp:506)
==31441==    by 0x7B9B4A: GameData::load() (GameData.cpp:59)
==31441==    by 0x7590C5: RWGame::RWGame(Logger&, int, char**) (RWGame.cpp:51)
==31441==    by 0x749175: main (main.cpp:13)
==31441==
==31441== 5,298,984 (1,080 direct, 5,297,904 indirect) bytes in 15 blocks are definitely lost in loss record 2,722 of 2,723
==31441==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==31441==    by 0x820253: __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::allocate(unsigned long, void const*) (new_allocator.h:111)
==31441==    by 0x820175: std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >&, unsigned long) (alloc_traits.h:436)
==31441==    by 0x81FFB4: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_M_get_node() (stl_tree.h:588)
==31441==    by 0x81FE03: std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_M_create_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&>(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&) (stl_tree.h:642)
==31441==    by 0x81FC26: std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_Alloc_node::operator()<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&>(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&) const (stl_tree.h:556)
==31441==    by 0x81F620: std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_M_insert_<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&, std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&, std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_Alloc_node&) (stl_tree.h:1753)
==31441==    by 0x81EDFD: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&>(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&) (stl_tree.h:2096)
==31441==    by 0x81E9F0: std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AnimationBone*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> > >::insert(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AnimationBone*> const&) (stl_map.h:796)
==31441==    by 0x81E0BB: LoaderIFP::loadFromMemory(char*) (LoaderIFP.cpp:132)
==31441==    by 0x7BE5D2: GameData::loadIFP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameData.cpp:506)
==31441==    by 0x7E4060: GameWorld::loadCutscene(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameWorld.cpp:692)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
7e4e1db85d rwlib: Use ClumpPtr instead of Clump*
Should fix these memory leaks:
==22737== 14,598,040 (131,472 direct, 14,466,568 indirect) bytes in 2,739 blocks are definitely lost in loss record 3,124 of 3,126
==22737==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==22737==    by 0x90FE4B: LoaderDFF::loadFromMemory(std::shared_ptr<FileContentsInfo>) (LoaderDFF.cpp:443)
==22737==    by 0x7BCC86: GameData::loadModel(unsigned short) (GameData.cpp:474)
==22737==    by 0x7DF7BC: GameWorld::createInstance(unsigned short, glm::tvec3<float, (glm::precision)0> const&, glm::tquat<float, (glm::precision)0> const&) (GameWorld.cpp:144)
==22737==    by 0x7DF44C: GameWorld::placeItems(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (GameWorld.cpp:120)
==22737==    by 0x758D38: RWGame::newGame() (RWGame.cpp:116)
==22737==    by 0x786389: LoadingState::enter() (LoadingState.cpp:9)
==22737==    by 0x75DC59: void StateManager::enter<LoadingState, RWGame*, RWGame::RWGame(Logger&, int, char**)::{lambda()#1}>(RWGame*&&, RWGame::RWGame(Logger&, int, char**)::{lambda()#1}&&) (StateManager.hpp:40)
==22737==    by 0x758484: RWGame::RWGame(Logger&, int, char**) (RWGame.cpp:81)
==22737==    by 0x747815: main (main.cpp:13)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
06c0f58ae8 config: add test about non-existing configuration directory 2017-08-15 15:58:01 +01:00
Anonymous Maarten
a92f24cbb4 config: unknown data will be kept in memory and saved onto disk 2017-08-15 15:58:01 +01:00
Anonymous Maarten
7a86c199b0 tests: only include GameConfig.hpp in source file (no header file)
This reduces compile time from 1m19s to 9s when touching GameConfig.hpp.

(Executed from rwgame/build/tests)
before:
$ make >/dev/null
$ touch ../../rwgame/GameConfig.hpp
$ time make>/dev/null

real	1m18.643s
user	1m13.069s
sys	0m5.266s

after:
$ make >/dev/null
$ touch ../../rwgame/GameConfig.hpp
$ time make>/dev/null

real	0m9.247s
user	0m8.374s
sys	0m0.836s
2017-08-15 15:58:01 +01:00
Anonymous Maarten
b1976fbcf2 tests: test_globals.hpp has a dependency on boost/test/unit_test.hpp 2017-08-15 15:58:01 +01:00
Anonymous Maarten
9e9e684a44 tests: only include test_globals.hpp when needed 2017-08-15 15:58:01 +01:00
Daniel Evans
adb0214351 Add interface for using AnimCycle in CharacterObject 2017-03-03 20:31:57 +00:00
Daniel Evans
4644c60c17 Replace AnimGroup implementation with animation table 2017-03-03 20:31:57 +00:00
Daniel Evans
a59fb1ae56 Extract AnimGroup to own header and cleanup 2017-03-03 20:31:57 +00:00
Anonymous Maarten
9cf939433c tests: set the test module name to openrw 2017-02-20 01:01:30 +00:00
Anonymous Maarten
e28e429b86 rwgame+config: show an error dialog when an error occurred on parsing the config file 2017-02-20 01:01:30 +00:00
Anonymous Maarten
76f2665acf config: log parsing Errors to a ParseResult object (which is queryable) 2017-02-20 01:01:30 +00:00
Anonymous Maarten
e0813e4378 config: fix TempFile.touch() + TempFile test + extra doc of getValidConfig 2017-02-20 01:01:30 +00:00
Anonymous Maarten
90001b11ac config: fix reading of illegal values
The parser would crash when trying to convert e.g. "d" to an integer.
2017-02-20 01:01:30 +00:00
Anonymous Maarten
66b09a64a5 config: added default INI string test + simplified tests + removed WTF 2017-02-20 01:01:30 +00:00
Anonymous Maarten
8f5664498c config: saveConfig + tests added 2017-02-20 01:01:30 +00:00
Anonymous Maarten
ed185f2526 config: add tests on reading good and bad configuration files 2017-02-20 01:01:30 +00:00
Anonymous Maarten
05db65dbbc config: allow reading INI from string, file, default and current config
This (slightly more complicated implementation) allows us,
once a configuration menu has been implemented,
to store the current/new configuration to a INI file.

The definitions of the parameters in rwgame/GameConfig.cpp
is limited to one location.
2017-02-20 01:01:30 +00:00
Anonymous Maarten
a725a51baa spelling: recieve -> receive 2017-02-20 01:01:30 +00:00
Anonymous Maarten
65b14fcb9c config: use boost::property_tree for INI read and default generation
* remove inih
* input.invert_y has now behavior as described on wiki
2017-02-20 01:01:30 +00:00
Anonymous Maarten
d2b706b874 tests: added test for comments in INI files
tests: test whitespaces and comments handling in config unit test
2017-02-20 01:01:30 +00:00
Daniel Evans
d84b492412 Remove all traces of Skeleton 2017-02-08 21:45:01 +00:00
Daniel Evans
ec5f1d7b55 Change Animator to animate Frames directly instead of Skeleton 2017-02-08 21:44:25 +00:00
Daniel Evans
1514bd2cc5 Implement Vehicle dynamics with Frames instead of Skeleton 2017-02-08 21:44:25 +00:00
Daniel Evans
ac8d6733cb Add clone methods to Clump, Atomic and ModelFrame to permit copying 2017-02-08 21:44:25 +00:00
Daniel Evans
34c70b0be2 Allow ModelFrame, Atomic, Geometry to exist outside of a Clump
This changes the Clump data structure to simplify it and move some
of the concerns into the Atomic and Frame types.
2017-02-08 21:44:25 +00:00
Daniel Evans
a0eaf5b8b0 Move Atomic and Geometry out of Clump class 2017-02-08 21:44:25 +00:00
Daniel Evans
8e4d73fca9 Rename Model -> Clump 2017-02-08 21:44:25 +00:00
Daniel Evans
162ff258c8 Load ped group data 2017-02-08 20:30:30 +00:00
Daniel Evans
79533fac8a Load ped type relationship data 2017-02-08 20:30:30 +00:00
Daniel Evans
4f5987c7b0 Load and associated pedstats with ped models 2017-02-08 20:30:29 +00:00
Daniel Evans
bb6698e373 Implement Hierarchy of game ZoneData
This allows querying of the most specific ZoneData for a given point
2017-01-30 00:24:44 +00:00
Daniel Evans
8d10c80196 Remove all traces of WorkContext 2016-12-02 01:00:22 +00:00
Daniel Evans
b65a513bbb Remove usages of WorkContext 2016-12-02 00:56:38 +00:00
Daniel Evans
9c8690bfae Fix Control enum order which was causing excessive aliasing 2016-11-19 23:50:34 +00:00
Daniel Evans
d62e8a6cd2 Make MenuEntry height a property of the Menu 2016-10-24 21:29:41 +01:00
Daniel Evans
613d386488 Improve Menu system implementation 2016-10-24 21:29:41 +01:00
Daniel Evans
5c78930c1b Remove InventoryItem and WeaponItem
They served no purpose other than to awkwardly implement weapon firing
This is now handled in the Weapon::fire* functions, and everything else
has been changed to reference weapon data or inventory indices directly
2016-10-19 22:14:52 +01:00
Daniel Evans
462479b992 Remove ResourceHandle.hpp 2016-10-05 22:38:35 +01:00
Daniel Evans
9b45a31834 Remove BackgroundLoader.hpp 2016-10-05 22:38:35 +01:00
Daniel Evans
62ad6b8628 Remove monolithic model list 2016-10-05 22:38:03 +01:00
Daniel Evans
6951434be8 Load objects directly 2016-09-27 22:49:08 +01:00
Daniel Evans
218ffdf66c Load and associate model data when creating objects 2016-09-27 22:49:07 +01:00
Daniel Evans
6888fa3558 Load and associate MODELFILE entries 2016-09-27 22:48:48 +01:00
Daniel Evans
996a82c4bf Overhaul Model data handling to improve accuracy 2016-09-27 22:48:45 +01:00
Daniel Evans
707ee4b32a Rename ObjectData.hpp -> ModelData.hpp 2016-09-11 02:59:02 +01:00
Daniel Evans
3015b7f3e0 clang-format files in tests 2016-09-09 21:13:22 +01:00
Daniel Evans
7b7e65e002 Fix file include path in test_FileIndex.cpp 2016-09-09 21:13:15 +01:00
Daniel Evans
0abfc695fb Remove GameData::openFile
The openFile API is not useful for implementing the correct
behaviour, so the underlying FileIndex method will be removed
soon.
2016-09-07 22:06:38 +01:00
Daniel Evans
d7dea62f04 remove unused method FileIndex::findFile 2016-09-07 22:06:38 +01:00
dan
810c6658d0 use openFilePath to open data files 2016-09-07 22:06:38 +01:00
Daniel Evans
03309d76d9 Don't defer loading IDE files 2016-09-07 01:34:42 +01:00
dan
306f6fa9d7 Use findFilePath when loading data files
This should make file loading more reliable for case sensitive
operating systems.
2016-09-07 00:42:27 +01:00
Daniel Evans
674ce55af3 Replace findPathRealCase with FileIndex methods
This introduces indexGameDirectory and findFilePath.
indexGameDirectory indexes the files in the game directory.
findFilePath returns the on-disk location of a case-insensitive
game data path.
2016-09-06 00:23:25 +01:00
Daniel Evans
3a53089d68 Merge pull request #190 from tsjost/fix/timecheat
Add method to modify game time properly
2016-08-23 00:28:54 +01:00
Daniel Evans
67aa5150ca Replace mb strings with 16-bit char strings
The game indexes into the font map directly, it doesn't use any font
 encoding scheme like UTF-16. This corrects the behaviour and removes
 dependancy on iconv.
2016-08-21 17:40:35 +01:00
Timmy Sjöstedt
03d27a0e80 Implemented method to modify game time properly 2016-08-17 01:03:31 +02:00
Daniel Evans
d8841c7561 Remove include directory from rwengine for consistency 2016-08-07 14:41:45 +01:00
darkf
196f9f6d25 Rewrite FileIndex to use boost::filesystem instead of POSIX 2016-08-03 18:31:47 -07:00
Daniel Evans
07945e767e Merge pull request #168 from danhedron/feature/build-hash
Add Git SHA1 hash to RWGame for versioning
2016-08-01 19:42:14 +01:00
Daniel Evans
ded631dad6 Add Git SHA1 hash to RWGame for versioning 2016-08-01 19:34:53 +01:00
Daniel Evans
f860e4c9a7 Overhaul object transformation handling
Objects must now write back to their position and rotations using
updateTransform(position, rotation) to updae their transform. This
allows the getPosition and getRotation methods to become non virtual
2016-07-02 20:37:04 +01:00
Daniel Evans
600333e20b Merge pull request #159 from danhedron/feature/traffic-vehicles
Parked traffic and out-of-view spawning
2016-06-29 23:04:00 +01:00
Daniel Evans
30e4a7faf1 Merge pull request #137 from haphzd/patch-1
File loading improvements
2016-06-29 22:26:58 +01:00
Daniel Evans
69e7d32f3a Use view frustum for traffic spawning and cleanup 2016-06-27 22:33:22 +01:00
haphzd
593aa73bda Use existing file loading method for SCM 2016-06-26 13:25:26 +03:00
Jannik Vogel
9bfb9f8002 CMake: Use FindSDL2.cmake 2016-06-22 23:58:27 +02:00
Christoph Heiss
649f7b144d Replace SFML with SDL2
This entirely replaces all remaining SFML pieces with SDL2 and
brings OpenRW up to OpenGL 3.3
2016-06-22 12:29:39 +02:00
Daniel Evans
dd70e41bbd Add TESTS_NODATA to build tests without data 2016-06-16 21:22:18 +01:00
Daniel Evans
81fe7166bd Disable broken object tests until the correct behaviour is known 2016-06-03 23:17:39 +01:00
Daniel Evans
5f4400f362 Fix character test to actually be correct 2016-05-28 01:32:48 +01:00
Daniel Evans
eef34c972a Script pickups: implement weapon pickups, improve pickup code 2016-05-25 23:00:52 +01:00
Daniel Evans
b7ac33caec Improve activities: canSkip(), let player cancel vehicle enter.
Closes #32
2016-05-24 23:49:01 +01:00
Daniel Evans
2ee4a6e533 Add configuration file to replace OPENRW_GAME_PATH env var
This will permit the storage of other user settings like language and
video settings.
2016-05-20 02:10:11 +01:00
Daniel Evans
9f85f283cb CMake: FindSFML+FindMAD, set library paths as SYSTEM, remove dead stuff. 2016-05-19 22:30:06 +01:00
Timmy Sjöstedt
b8062714a9 Work around Boost having moved stuff around, fixes #20 2016-05-19 22:28:01 +02:00
Daniel Evans
5721333fb0 Overhaul script text display with new text logic system.
Logic for displaying text now belongs in ScreenText, which will
handle type specific text display.
2016-05-07 18:29:08 +01:00
Daniel Evans
e7faa60926 Make unit tests work again, fixing tests & code 2016-05-02 17:38:04 +01:00
Daniel Evans
8a5be54b91 Overhaul animation system and character activities
Replaces animator with a simpler system that can overlay multiple
animations

Character animation split into two layers, motion and action.
Walking, running and jumping animations are played on the first
layer, actions such as firing can be overlayed on the second.
More work is needed to limit overlap to only the weapons that make
sense.
2016-04-17 04:54:19 +01:00
Daniel Evans
f3b81c5690 Bring tests back up to compiling and running. Only a few are failing 2016-04-15 01:06:10 +01:00
Daniel Evans
691bba5dca New inventory implementation and split char state 2016-04-10 18:57:40 +01:00
Daniel Evans
14269d8ae5 Move first of lower level code into rwlib; tear out GLEW. 2016-04-07 01:13:46 +01:00
Daniel Evans
bf1c8bb0ca Fix crashes from mixing player / character references 2015-07-01 23:16:06 +01:00
Daniel Evans
7ceaac370c Load Weapon inventory data from save files 2015-06-14 21:52:47 +01:00
Daniel Evans
5d3ac6218e Implement Game Object ID allocation 2015-04-29 21:03:53 +01:00
Daniel Evans
85b1ab120f Move GameState out of GameWorld ownership 2015-04-27 03:55:18 +01:00
Daniel Evans
5db4c28f04 Refactor Object Definition information to GameData 2015-04-24 18:10:42 +01:00
Daniel Evans
a4f0ef7f44 Fix test crash caused by double free 2015-04-24 15:36:46 +01:00
Daniel Evans
e04f9a8d40 Move GameData from GameWorld 2015-04-18 01:11:17 +01:00
Daniel Evans
b672e41acf Remove Logger ownership from GameWorld 2015-04-03 03:07:08 +01:00
Daniel Evans
d1e7dcdcd1 Overhaul Loader framework for Models
- Replace background model loader with generic background loader
- Replace ModelHandle object with generic resource handle
2015-04-03 03:04:50 +01:00
Daniel Evans
abf43f07c8 New File handling implementation
- move FileHandle into a separate header
- Implement FileIndex, a system to normalize filenames and sources
2015-04-03 03:04:50 +01:00
Daniel Evans
fe4926e5d6 Add object lifetime values, clean up spawned traffic 2015-02-18 16:00:55 +00:00
Daniel Evans
9407ee3135 Add test implementation of pedestrian spawning 2015-02-18 15:29:39 +00:00
Daniel Evans
2ccc1fc33c Add initial TrafficDirector open spawn point methods 2015-02-17 01:31:20 +00:00
Daniel Evans
2344024f08 Text rendering 2015-02-07 22:55:06 +00:00
Daniel Evans
77f2277a68 Improved vehicle door dynamics with opening doors 2014-12-14 20:45:58 +00:00
Daniel Evans
25a3a0183b Overhaul vehicle part system with VehicleObject::Part 2014-12-14 01:32:00 +00:00
Daniel Evans
330fa56b77 Fix animation test case 2014-12-12 00:36:45 +00:00
Daniel Evans
1fb8162a7c Fix broken object data test cases 2014-12-11 18:34:39 +00:00
Daniel Evans
584618e991 Overhaul animation support with Skeleton class.
Move frame transform data into Skeleton instead of Animator.
Animator now responsible for mutating Skeleton state.
Skeleton is more flexible for things like vehicle skeletons.
2014-12-11 17:48:47 +00:00
Daniel Evans
7d92fbb9f2 Huge rwviewer changes for new objects.
+ Change to Object Viewer to list all object types
2014-09-19 00:10:05 +01:00
Daniel Evans
cfca1cbdc8 Refactor Object data into heirarchy
+ All Object Data classes inheirt from ObjectInformation which stores
  the ID and class_type, which maps to the IDE name.
- Remove all object mappings except for objectTypes, which now stores
  all of them.
2014-09-17 03:13:02 +01:00
Daniel Evans
c3956ac888 Refactor some text data loading to seperate class 2014-09-13 03:29:32 +01:00
Daniel Evans
f7398f17f8 Refactor character movement. 2014-08-26 22:54:26 +01:00
Daniel Evans
4d78cacd84 Improve CMake detection of platform libraries 2014-08-16 23:02:34 +01:00
Timmy Sjöstedt
70cadb7a86 Fixed another Bullet inclusion path. 2014-08-16 00:20:58 +02:00
Timmy Sjöstedt
460473f461 Link OpenGL with CMake find package. 2014-08-16 00:20:13 +02:00
Timmy Sjöstedt
a854a11dc3 Added linking to iconv
TODO make it cmake-y
2014-08-16 00:19:04 +02:00
Daniel Evans
ba7eb63941 Refactor and cleanup camera control.
rwengine
+ Make renderWorld() take a ViewCamera parameter.
+ add rotation and getView to ViewCamera
+ correct directions for vehicle and character movement.

rwgame
+ Remove GenericState
+ Add State::getCamera() to control the ViewCamera used for rendering
+ Clean up state camera control
+ Remove now unused view parameters from main
2014-08-12 21:15:26 +01:00
Daniel Evans
5aaead1974 Fix potential non-return in LoaderIMG 2014-08-11 18:16:18 +01:00
Daniel Evans
b1c82e3582 Fix compilation under clang, fix majority of warnings 2014-08-11 17:58:43 +01:00
Daniel Evans
6c78b0c3c5 Refactor DFF Loader, underlying stream handling
+ Fix some model related memory leaks
2014-08-04 22:24:37 +01:00
Daniel Evans
aa841c0ed3 Merge branch 'script-tool'
Conflicts:
	rwengine/include/engine/GameObject.hpp
	rwengine/include/engine/GameWorld.hpp
	rwengine/include/render/GameRenderer.hpp
	rwengine/src/render/GameRenderer.cpp
2014-07-30 13:55:39 +01:00
Daniel Evans
688ee493b4 Add GXT loading support and i18n of prints. 2014-07-28 06:20:39 +01:00
Daniel Evans
5b9c95d346 Add Initial Cutscene playback implementation
+ Add CutsceneData structures to store the data required.
+ Implement screen fading in and out (todo: splash screen fading)
+ Add GameData::openFile2() returns a handle to open file memory + size
+ Fix fog implementation
+ Add screenspace rect to GameRenderer for fades and cinematics
2014-07-28 02:27:55 +01:00
Daniel Evans
c3e2172f3b Initial Script Machine implementation + some ops 2014-07-23 23:57:21 +01:00
Daniel Evans
c35c2c636a Add thrown projectiles, support for queued deletion 2014-07-20 21:21:51 +01:00
Daniel Evans
770a87dd2b Add correct collision response for molotov + rpg 2014-07-17 01:46:24 +01:00
Daniel Evans
f8f17db68f add ProjectileObject with support for grenades 2014-07-14 01:29:05 +01:00
Daniel Evans
b8860722fd Further implement weapons and pickups
Inventory can now by cycled
Weapon Pickups are created infront of the spawn
2014-07-04 21:06:56 +01:00
Daniel Evans
0214a29ca3 Implement character inventory items, with weapon 2014-06-29 22:14:46 +01:00
Daniel Evans
1673e439fd Cleanup test 2014-06-28 17:20:49 +01:00
Daniel Evans
87a04d9119 Added weapon scan for HITSCAN
WeaponScans contain data required to affect objects in the world with
weapon damage
2014-06-28 03:22:53 +01:00
Daniel Evans
3a3fb9aff4 fix errenous test cases 2014-06-26 18:16:35 +01:00
Daniel Evans
1244a87665 Add weapon data loading 2014-06-26 17:55:17 +01:00
Daniel Evans
3ccf5ebaa2 Door and bonnet dynamics 2014-06-20 00:47:45 +01:00
Daniel Evans
8cbf1eaefe Animator procedural frame orientation 2014-06-19 19:18:34 +01:00
Daniel Evans
9f257ea4c4 Animator update and vehicle frame damage
Refactor Animator to handle frame visibility, removing isFrameVisible()
Make frames be removed if they are damaged due to physics.
2014-06-18 05:08:15 +01:00
Daniel Evans
3a156063d8 Improve renderer and LOD handling 2014-06-17 21:46:54 +01:00
Daniel Evans
2c16134abd Initial, unstable, water dynamics 2014-06-13 21:54:17 +01:00
Daniel Evans
65b5c84b92 Initial dynamic object implementation 2014-06-11 21:00:53 +01:00
Daniel Evans
891b12272c Rename more classes to better names 2014-06-06 17:17:39 +01:00
Daniel Evans
439749e34f Rename Object classes and files 2014-06-06 15:22:26 +01:00
Daniel Evans
61931145fe Threaded model and texture loading 2014-06-06 13:12:20 +01:00
Daniel Evans
f24ceeb42f Overhaul worker interface 2014-06-04 11:53:11 +01:00
Daniel Evans
51e4fb9989 Data Loader interface 2014-06-04 06:02:41 +01:00
Daniel Evans
d56a3badc0 Overhaul animation system; tick alpha
Animators now store Frame keyframes more sensibly
Animators can interpolate between two keyframes on an alpha
Add tick alpha value to the rendering pipeline
2014-06-02 04:58:41 +01:00
Daniel Evans
c8f5e7ead2 Fixed more broken vehicle interaction 2014-05-31 19:22:43 +01:00
Daniel Evans
052ce629c4 Refactor Animator to support multiple animations 2014-05-31 12:15:20 +01:00
Daniel Evans
04842a628a Primitive debug menu; vehicle enter animation 2014-05-31 08:18:50 +01:00
Daniel Evans
d7b738cdc1 Replace Activity switch with objects 2014-05-29 11:12:40 +01:00
Daniel Evans
532738077e Initial shift to AIController controlling 2014-05-29 09:34:59 +01:00
Daniel Evans
c5451f5fd4 Fix compiler errors and test problems 2014-05-25 22:30:50 +01:00
Daniel Evans
bd96b0b190 Added vehicle damage flags 2014-03-01 04:12:35 +00:00
Daniel Evans
e1a37e44c4 Cleaned up some object data
Renamed some vehicle related data objects
Changed types on some vehicle data containers
Renamed GTAObject to GameObject
2014-02-28 11:23:51 +00:00