1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-19 08:52:33 +02:00
Commit Graph

926 Commits

Author SHA1 Message Date
Anonymous Maarten
6ccf85b770 cmake: make bullet an imported target 2017-10-29 20:40:57 +00:00
Anonymous Maarten
9f1ba0fe76 cmake: make ffmpeg an imported target 2017-10-29 20:40:57 +00:00
Anonymous Maarten
47dbea1bb4 cmake: make glm an imported target 2017-10-29 20:40:57 +00:00
Anonymous Maarten
f5a237bf7b cmake: reformat rwengine/CMakeLists.txt 2017-10-29 20:40:57 +00:00
Anonymous Maarten
1926795d63 cmake: use rwengine::interface + no more add_definitions & include_directories 2017-10-29 20:40:57 +00:00
Filip
b9d306ae70 Improving handling game shaders (#302)
* move delete to earlier stage

* lines for better readability

* Added detach shader

* Addition forgotten glDeleteProgram

https://github.com/rwengine/openrw/search?utf8=%E2%9C%93&q=glDeleteProgram&type=
In project there's no necessary clearing call of glDeleteProgram.

* Removing/Closing shader programs

Each shader program should be taken care by glDeleteProgram.
To make it works/usefull, each shader's raw ptr will convertet to unique_ptr
in next commit.

* Converting ShaderProgram's ptr to unique

Actually deleting isn't handled,
so this commit removes memory leak.
2017-10-29 18:47:52 +00:00
Filip
c54cfa0ae8 Avoid making unnecessary copies (#337)
* frames.emplace_back

* vehicleColours.emplace_back

* colours.emplace_back

* waterBlocks.emplace_back

* state.garages.emplace_back

* bonedata->frames.emplace_back

* lines.emplace_back

* circleVerts.emplace_back

* geo.emplace_back

* Water renderer

* perf_colours.emplace_back
2017-10-29 17:14:07 +00:00
Filip Gawin
9aa01b69e1 Resolve cases found by gcc-5 2017-10-26 21:22:08 +01:00
Filip Gawin
512ac6f5ee Fix double promotion 2017-10-25 01:17:46 +01:00
Daniel Evans
43047269ab Offset vehicle spawn height to account for dimensions
Should prevent vehicles spawning in, and falling through, the ground.
2017-10-19 23:42:41 +01:00
Anonymous Maarten
14ef8c2539 rwengine: incorporate review 2017-10-18 21:52:29 +01:00
Anonymous Maarten
8012a5065d rwengine: Store btOverlappingPairCallback in GameWorld
Should fix this memory leak:
==16721== 8 bytes in 1 blocks are definitely lost in loss record 7 of 264
==16721==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==16721==    by 0x7E7B5D: GameWorld::GameWorld(Logger*, GameData*) (GameWorld.cpp:100)
==16721==    by 0x76EC0B: std::_MakeUniq<GameWorld>::__single_object std::make_unique<GameWorld, Logger*,
 GameData*>(Logger*&&, GameData*&&) (unique_ptr.h:825)
==16721==    by 0x760F50: RWGame::newGame() (RWGame.cpp:107)
==16721==    by 0x78E713: LoadingState::enter() (LoadingState.cpp:9)
==16721==    by 0x76602B: void StateManager::enter<LoadingState, RWGame*, RWGame::RWGame(Logger&, int, ch
ar**)::{lambda()#1}>(RWGame*&&, RWGame::RWGame(Logger&, int, char**)::{lambda()#1}&&) (StateManager.hpp:4
0)
==16721==    by 0x760842: RWGame::RWGame(Logger&, int, char**) (RWGame.cpp:81)
==16721==    by 0x750385: main (main.cpp:13)
2017-10-18 21:52:29 +01:00
Anonymous Maarten
a610ea2387 rwengine: store btCollisionShape along btRigidBody in Part
Should fix this memory leak:
==16721== 103 bytes in 1 blocks are definitely lost in loss record 181 of 264
==16721==    at 0x4C2EB6B: malloc (vg_replace_malloc.c:299)
==16721==    by 0x58F1AF3: ??? (in /usr/lib64/libLinearMath.so.2.83)
==16721==    by 0x83E3C9: btBoxShape::operator new(unsigned long) (btBoxShape.h:34)
==16721==    by 0x83CD75: VehicleObject::createObjectHinge(VehicleObject::Part*) (VehicleObject.cpp:722)
==16721==    by 0x83C251: VehicleObject::setPartLocked(VehicleObject::Part*, bool) (VehicleObject.cpp:610)
==16721==    by 0x83C2D0: VehicleObject::setPartTarget(VehicleObject::Part*, bool, float) (VehicleObject.cpp:623)
==16721==    by 0x7B10CD: Activities::EnterVehicle::update(CharacterObject*, CharacterController*) (CharacterController.cpp:226)
==16721==    by 0x7B062D: CharacterController::updateActivity() (CharacterController.cpp:26)
==16721==    by 0x7B09FE: CharacterController::update(float) (CharacterController.cpp:98)
==16721==    by 0x8EBBFA: DefaultAIController::update(float) (DefaultAIController.cpp:87)
==16721==    by 0x82ED5A: CharacterObject::tick(float) (CharacterObject.cpp:240)
==16721==    by 0x763630: RWGame::tick(float) (RWGame.cpp:506)
==16721==
==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
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
e448f610ff rwengine: make Renderer a shared_ptr
Should fix this memory leak:
==16721== 912 (600 direct, 312 indirect) bytes in 1 blocks are definitely lost in loss record 225 of 264
==16721==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==16721==    by 0x84A697: GameRenderer::GameRenderer(Logger*, GameData*) (GameRenderer.cpp:71)
==16721==    by 0x75FC7D: RWGame::RWGame(Logger&, int, char**) (RWGame.cpp:35)
==16721==    by 0x750385: main (main.cpp:13)
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
5e330346ec rwengine: delete corona VisualFX on delete of PickupObject
Should fix this memory leak:
==31441== 1,184 (1,144 direct, 40 indirect) bytes in 11 blocks are definitely lost in loss record 2,344 of 2,723
==31441==    at 0x4C2F1CA: operator new(unsigned long) (vg_replace_malloc.c:334)
==31441==    by 0x7E30D5: GameWorld::createEffect(VisualFX::EffectType) (GameWorld.cpp:495)
==31441==    by 0x82CE16: PickupObject::PickupObject(GameWorld*, glm::tvec3<float, (glm::precision)0> const&, BaseModelInfo*, PickupObject::PickupType) (PickupObject.cpp:126)
==31441==    by 0x82C505: ItemPickup::ItemPickup(GameWorld*, glm::tvec3<float, (glm::precision)0> const&, BaseModelInfo*, PickupObject::PickupType, WeaponData*) (ItemPickup.cpp:11)
==31441==    by 0x7E2953: GameWorld::createPickup(glm::tvec3<float, (glm::precision)0> const&, int, int) (GameWorld.cpp:389)
==31441==    by 0x86D209: opcode_0213(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&) (GTA3ModuleImpl.inl:6350)
==31441==    by 0x8DC0EF: void script_bind::call_unpacked<0u, 7u, void>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, int&, int&, glm::tvec3<float, (glm::precision)0>&, ScriptObjectType<PickupObject> >(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, ScriptArguments const&, int&, int&, glm::tvec3<float, (glm::precision)0>&, ScriptObjectType<PickupObject>&&) (ScriptModule.hpp:80)
==31441==    by 0x8D9B82: void script_bind::call_unpacked<1u, 6u, void, ScriptObjectType<PickupObject>&>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, int&, int&, glm::tvec3<float, (glm::precision)0> >(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, ScriptArguments const&, int&, int&, glm::tvec3<float, (glm::precision)0>&&) (ScriptModule.hpp:90)
==31441==    by 0x8D6753: void script_bind::call_unpacked<2u, 3u, void, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, int&, int>(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, ScriptArguments const&, int&, int&&) (ScriptModule.hpp:90)
==31441==    by 0x8D213D: void script_bind::call_unpacked<3u, 2u, void, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, int>(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, ScriptArguments const&, int&&) (ScriptModule.hpp:90)
==31441==    by 0x8CBEE0: void script_bind::call_unpacked<4u, 1u, void, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&>(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&, ScriptArguments const&) (ScriptModule.hpp:90)
==31441==    by 0x8C0078: void script_bind::call_unpacked<5u, 0u, void, ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&>::call<void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&)>(void (*)(ScriptArguments const&, int, int, glm::tvec3<float, (glm::precision)0>, ScriptObjectType<PickupObject>&), ScriptArguments const&) (ScriptModule.hpp:90)
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
Filip Gawin
c5ade22377 Implement 0197-01B0 2017-10-17 22:26:15 +01:00
Filip Gawin
863d69656d Implement 00b0, 00b1 2017-10-17 22:26:15 +01:00
Filip Gawin
5cb1cd884c Implement 00a3, 00a4
As you can see, they are copies
of 0056, 0057.

32a64aa214/rwengine/src/script/modules/GTA3ModuleImpl.inl (L939)
2017-10-17 22:26:15 +01:00
Tomi Lähteenmäki
4bf1d3795b Fix jumping in newer bullet version (#328)
* Fix jumping in newer bullet version

* Added check for bullet version
jump() was changed in bullet version 2.84
2017-10-16 22:37:02 +01:00
Christoph Heiss
a347c07961 Use memcpy instead of mempcpy as mempcpy is glibc-specific.
This fixes #324 on macOS.
The only difference between memcpy and mempcpy is that mempcpy returns
a pointer one after the last written byte - the return value is unused.
2017-10-13 23:20:23 +01:00
Daniel Evans
8e86786e5b Update Character movement at each physics sub-step 2017-10-13 21:40:40 +01:00
Daniel Evans
c915521436 Use a sliding range within a larger UBO for object data.
Improves performance quite considerably (30%) on Ivy Bridge
2017-10-13 19:58:27 +01:00
Christoph Heiss
6cab5ee31a Fix some warnings
openrw/rwengine/src/engine/GameData.cpp:358:26: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
    textureslots[slot] = std::move(loadTextureArchive(name));
                         ^
openrw/rwengine/src/engine/GameData.cpp:358:26: note: remove std::move call here
    textureslots[slot] = std::move(loadTextureArchive(name));
                         ^~~~~~~~~~                        ~

openrw/rwengine/src/objects/CharacterObject.cpp:16:18: warning: unused variable 'enter_offset' [-Wunused-variable]
static glm::vec3 enter_offset(0.81756252f, 0.34800607f, -0.486281008f);
                 ^

In file included from openrw/rwgame/RWGame.cpp:5:
openrw/rwgame/states/BenchmarkState.hpp:33:23: warning: 'BenchmarkState::getCamera' hides overloaded virtual function
      [-Woverloaded-virtual]
    const ViewCamera& getCamera();
                      ^
openrw/rwgame/State.hpp:51:31: note: hidden overloaded virtual function 'State::getCamera' declared here: different number of
      parameters (1 vs 0)
    virtual const ViewCamera& getCamera(float alpha);
                              ^
In file included from openrw/rwgame/RWGame.cpp:6:
openrw/rwgame/states/IngameState.hpp:53:18: warning: 'draw' overrides a member function but is not marked 'override'
      [-Winconsistent-missing-override]
    virtual void draw(GameRenderer* r);
                 ^
openrw/rwgame/State.hpp:28:18: note: overridden virtual function is here
    virtual void draw(GameRenderer* r) {
                 ^
In file included from openrw/rwgame/RWGame.cpp:6:
openrw/rwgame/states/IngameState.hpp:60:23: warning: 'getCamera' overrides a member function but is not marked 'override'
      [-Winconsistent-missing-override]
    const ViewCamera& getCamera(float alpha);
                      ^
openrw/rwgame/State.hpp:51:31: note: overridden virtual function is here
    virtual const ViewCamera& getCamera(float alpha);
                              ^
openrw/rwgame/RWGame.cpp:242:22: warning: unused variable 'vehicleModel' [-Wunused-variable]
            uint16_t vehicleModel = 110;  // @todo Which cars are spawned?!
                     ^

In file included from openrw/rwengine/src/script/modules/GTA3Module.cpp:1:
In file included from openrw/rwengine/src/engine/GameState.hpp:7:
openrw/rwengine/src/engine/ScreenText.hpp:140:63: warning: suggest braces around initialization of subobject [-Wmissing-braces]
        const std::array<GameString, sizeof...(args)> vals = {args...};
                                                              ^~~~
                                                              {   }
openrw/rwengine/src/script/modules/GTA3ModuleImpl.inl:5669:16: note: in instantiation of function template specialization
      'ScreenText::format<std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > >'
      requested here
                        ScreenText::format(
                                    ^
In file included from openrw/rwengine/src/script/modules/GTA3Module.cpp:1:
In file included from openrw/rwengine/src/engine/GameState.hpp:7:
openrw/rwengine/src/engine/ScreenText.hpp:140:63: warning: suggest braces around initialization of subobject [-Wmissing-braces]
        const std::array<GameString, sizeof...(args)> vals = {args...};
                                                              ^~~~
                                                              {   }
openrw/rwengine/src/script/modules/GTA3ModuleImpl.inl:10214:18: note: in instantiation of function template specialization
      'ScreenText::format<std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >,
      std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > >' requested here
            ScreenText::format(script::gxt(args, gxtEntry),
                        ^

openrw/rwgame/State.cpp:40:42: warning: unused parameter 'alpha' [-Wunused-parameter]
const ViewCamera& State::getCamera(float alpha) {
                                         ^

openrw/rwengine/src/render/ObjectRenderer.cpp:20:17: warning: unused variable 'kWorldDrawDistanceFactor'
      [-Wunused-const-variable]
constexpr float kWorldDrawDistanceFactor = kDrawDistanceFactor;
                ^
2017-10-13 19:54:10 +01:00
Filip Gawin
7b706e11d4 Fix text colors
On gtamodding.com is list
https://www.gtamodding.com/wiki/GXT#Tokens
2017-10-13 19:48:12 +01:00
Aldoxtor
7b0b82c502 implement isPlayer() 2017-10-08 18:29:14 +01:00
Daniel Evans
7f2c512f50 Use Renderer in place of raw GL calls in more places
Additionally, fix setBlend() enabling blending on every draw
2017-10-08 18:18:28 +01:00
Filip Gawin
6d67728b4f Fix opcode 00bc
After some researches I found that,
script with opcode 03d5 removes only short
connected with sound, not cutscene's text.

Example:
aa12022061/19_8ball.sc (L164)

But in case of cutscenes, script doesn't do anything,
so logically suspecting, all opcodes connected with key word NOW,
are flushing currently used text.

aa12022061/19_8ball.sc (L862)
2017-10-08 14:37:16 +01:00
Filip Gawin
26e7d57905 Fix opcode 03d5
As you can see in script:
https://github.com/Lighnat0r/GTA-III-SCM-Converted/search?utf8=%E2%9C%93&q=03d5&type=
Opcode 03d5 is cleaning only after 00BC.

00BC is using HighPriority, not Big.
2017-10-08 14:37:16 +01:00
Filip Gawin
cc61d3858d Implement opcodes arg = abs(arg)
Commit implements 0094, 0095,
0096, 0097
2017-09-28 22:21:53 +01:00
Filip Gawin
ca819e9ddc Implement opcodes feet --> meters
Implement 0425, 042D.
2017-09-28 22:21:53 +01:00
Filip Gawin
a6d153b163 Implement opcodes int <--> float
Implements 008c, 008d, 008e, 008f,
0090, 0091, 0092, 0093.
2017-09-28 22:21:53 +01:00
Filip Gawin
c16f565136 Implement 02f6 02f7 2017-09-28 22:21:53 +01:00
Filip Gawin
11e90c61e5 Simplify condition
Like suggested in #293.
2017-09-19 14:23:31 +01:00
Filip Gawin
391e993d1f Simplify condition and increase readability 2017-09-19 14:23:31 +01:00
Filip Gawin
27113e540f Deleting "empty", duplicated variables in CharacterState
All objects inherites variables: rotation and position from GameObject,
CharacterObject contains also CharacterState with empty,
never used position and rotation. They are not even initialized.

https://github.com/rwengine/openrw/search?utf8=%E2%9C%93&q=currentState&type=
https://github.com/rwengine/openrw/search?p=1&q=getCurrentState&type=&utf8=%E2%9C%93
2017-09-19 14:23:31 +01:00
Filip Gawin
2890280934 Convert default initialization to value initialization
Default initialization has a problem,
it doesn't initialize POD class,
so it's safer to use value initialization,
especially for "outside" class (like bullet).
2017-09-19 14:23:31 +01:00
Anonymous Maarten
02c60311ee rwlib/rwengine: make use of RW_ASSERT instead of assert 2017-09-16 22:19:39 +01:00
darkf
afe4928678 SoundManager: use av_frame_free, not av_free 2017-09-16 19:50:51 +01:00
darkf
8fd6d2f125 SoundManager: Set log level to error on release, warning on debug 2017-09-16 19:50:51 +01:00
darkf
f4f0f28a14 Support older libavcodec versions and update .travis.yml for new dependencies 2017-09-16 19:50:51 +01:00
darkf
ec2e940924 Remove libsndfile dependency 2017-09-16 19:50:51 +01:00
darkf
d69fdffdd1 Remove mman-win32 dependency 2017-09-16 19:50:51 +01:00
darkf
8e26431665 Remove dependency on libMAD (hurrah!) 2017-09-16 19:50:51 +01:00
darkf
4f60dcb663 Replace Music with Sound 2017-09-16 19:50:51 +01:00
darkf
c474bbe280 Implement FFmpeg audio decoder 2017-09-16 19:50:51 +01:00
Filip
8b067f4f69 Replacing "new" operators with make_unique/shared (#306)
* Replace "new" operator with std::make_unique for BS in BinaryStream.cpp

* Replace "new" operator with std::make_unique for textureArchive in TextureArchive.cpp

* Replace "new" operator with std::make_unique for variables in LoaderIDE.cpp

* Addition constructor for InstanceData

* Replace "new" operator with std::make_shared for instance  in LoaderIPL.cpp
2017-09-12 02:00:03 +01:00
Daniel Evans
b7ae0a54e4 Fix unused variable warning in rwengine 2017-09-12 01:44:22 +01:00
Aldoxtor
7a8c602c75 add missing override 2017-09-12 01:40:31 +01:00
Aldoxtor
fd5acc2be2 fixing magic numbers in playAnimation() 2017-09-12 01:35:24 +01:00
Anonymous Maarten
17bfa2cf74 rwengine: check for valid reads in DAT readers (in debug mode) 2017-09-12 00:55:41 +01:00
Anonymous Maarten
2e62a115bd rwengine: Ignore lines in DAT files starting with '*'
Last line starts with asterisk and would cause an uninitialized
DynamicsObjectDataPtr object to be inserted.
2017-09-12 00:55:41 +01:00
Anonymous Maarten
3488baae18 rwengine: Do not copy EndOfArgList to locals of created thread
integerValue RW_ERRORs for non-integer types
2017-09-12 00:55:41 +01:00
Anonymous Maarten
4700adb8c0 rwengine: std::map::end returns an iterator to the past-the-end element
Use std::map::rbegin instead
2017-09-12 00:55:41 +01:00
Anonymous Maarten
692ba92167 rwengine: extracting a float from a stream does not extract the f suffix
On Visual Studio 2017

std::istringstream ss("0.4f,0.8f,");
float f1, f2;
ss >> f1;          /* Will leave the f suffix available on the stream. */
ss.ignore(2, ','); /* Ignore until the comma. */
ss >> f2;
...
2017-09-12 00:55:41 +01:00
Filip Gawin
9e20ad6c20 ‘ObjectRenderer::m_errorTexture’ will be initialized after [-Wreorder] 2017-08-03 11:52:24 +01:00
Filip Gawin
950a83d4ba removing warning: ‘VehicleObject::mHasSpecial’ will be initialized after [-Wreorder] 2017-08-03 11:52:24 +01:00
ShFil119
d08c2686e1 Replace manual conversion with glm's function
Glm allows to use angle manipulation functions. One of them is conversion degrees to radians.
It gives optimal precision and isn't strictly connected with float.
https://glm.g-truc.net/0.9.4/api/a00136.html#ga4fb76e28851c9ff6653532566084e091
// Please close https://github.com/rwengine/openrw/pull/295 New pull request prevents trash in history, and it's easier to read.
2017-06-18 18:10:46 +02:00
Aldoxtor
963f490cf0 small clean up 2017-04-21 20:24:32 +01:00
Aldoxtor
4fdf3a2280 add missing headers 2017-04-21 20:24:32 +01:00
vflyson
79bdd78952 Implement in-car perks 2017-03-15 21:41:39 +00:00
vflyson
a0beb47c5d Prevent Rhino's front wheels from changing steering angle 2017-03-13 22:15:22 +00:00
Daniel Evans
cf767d161f Use the correct animation group for each character 2017-03-03 20:31:57 +00:00
Daniel Evans
974d7e826a Use AnimCycle IDs instead of Animation* in CharacterController 2017-03-03 20:31:57 +00: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
a725a51baa spelling: recieve -> receive 2017-02-20 01:01:30 +00:00
Daniel Evans
aec738c396 Remove un-needed assert in WaterRenderer
Values above height count are valid and indicate water disabled.
2017-02-19 01:51:01 +00:00
vflyson
01241f33d9 make it possible to scroll down to the fist 2017-02-19 00:57:30 +00:00
Vincent Flyson
edcf62c04a apply various colors to pickups' coronas, use the correct texture (#269)
* apply various colors to pickups' coronas, use the correct texture

* give coronas the pulsating effect
2017-02-16 20:12:06 +00:00
Daniel Evans
d6e2057f8f Apply LOD multiplier correctly when rendering 2017-02-08 21:45:01 +00:00
Daniel Evans
e1f7d11c82 Fix off-by-one error in Simple Model atomic lookup 2017-02-08 21:45:01 +00:00
Daniel Evans
308d1d6deb Implement Building LOD transitions 2017-02-08 21:45:01 +00:00
Daniel Evans
5f6f3fe66f Implement vehicle LOD rendering 2017-02-08 21:45:01 +00:00
Daniel Evans
d84b492412 Remove all traces of Skeleton 2017-02-08 21:45:01 +00:00
Daniel Evans
94456aa732 Convert CutsceneObject to use Frame animation 2017-02-08 21:44:25 +00:00
Daniel Evans
a6396ec6e8 Remove forward movement from Character Animation 2017-02-08 21:44:25 +00:00
Daniel Evans
ec5f1d7b55 Change Animator to animate Frames directly instead of Skeleton 2017-02-08 21:44:25 +00:00
Daniel Evans
3163a5dd57 Initial CharacterObject Clump implementation 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
f64104600e Add a clump instance for each VehicleObject 2017-02-08 21:44:25 +00:00
Daniel Evans
80c9b73ac5 Initial Instance Object Rendering via atomics 2017-02-08 21:44:25 +00:00
Daniel Evans
729085d08c Re-implement vehicle parts for changed frame interfaces 2017-02-08 21:44:25 +00:00
Daniel Evans
0a0be3c52a Use new Clump structures in rwviewer + remove old renderer 2017-02-08 21:44:25 +00:00
Daniel Evans
d798509f93 Use Atomic instead of ModelFrame in ObjectRenderer 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
3b3f1c8631 Spawn locale appropriate pedestrians near the camera 2017-02-08 20:30:30 +00:00
Daniel Evans
b1582bae4a Name save file variables 2017-02-08 20:30:30 +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
b0e7cbdadd Add PedType save game block details 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
3247fafa90 Load game zones from save file block 2017-01-30 00:24:44 +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
f12186dede Implement 0373, fix stuck player after "Drive Misty For Me"
Leave opcode unimplemented directive, as behaviour is likely not correct
2017-01-16 22:36:38 +00:00
haphzd
e6ec1b69f0 Bring back culling events counter 2016-12-10 22:19:38 +03:00
Daniel Evans
eb71f59594 Update character look direction when setting orientation 2016-12-06 22:43:01 +00:00
Daniel Evans
b9740b3b8a Only face movement direction when not strafing 2016-12-04 01:06:27 +00:00
Daniel Evans
920d3f86fe Use look angles for weapon hitscans 2016-12-04 01:06:27 +00:00
Daniel Evans
ddb62ed3cd Rewrite of camera and character look code
Make states responsible for interpolating camera transformation
Apply look direction to character orientation
2016-12-04 01:06:27 +00:00
Daniel Evans
c00145e551 Reduce code duplication for DFF texture lookup 2016-12-03 21:59:37 +00:00
Daniel Evans
d75c476221 Remove global texture list and use a slot name to lookup textures 2016-12-03 21:59:37 +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
7ad8ae5e40 Make loadTXD synchronous only 2016-12-02 00:42:38 +00:00
Daniel Evans
c63d12b70a Merge pull request #250 from JohnPaulHarold/openal_headers
OpenAL headers, fix for OSX compile
2016-11-22 21:00:49 +00:00
John-Paul Harold
9a1d1033e7 Fix OpenAL includes (fixes OSX build) 2016-11-21 11:19:29 +00:00
Daniel Evans
d0e01465ff Merge pull request #248 from danhedron/input-fixup
Input fixup
2016-11-20 00:15:08 +00:00
Daniel Evans
9c8690bfae Fix Control enum order which was causing excessive aliasing 2016-11-19 23:50:34 +00:00
Daniel Evans
57edc3648b Detect event starts by double-buffering state 2016-11-19 23:50:34 +00:00
Jannik Vogel
d5ff5601be Fixup BT_BULLET_VERSION check
Bullet 2.83.5 was 283, 2.83.6 was 284, 2.84 (API changes affecting OpenRW) was 285, 2.85.1 is still 285.
We want to check for 2.84 and upwards, so our check must be for 285.
2016-11-07 22:38:38 +01:00
Daniel Evans
9f2fb5aa19 Merge pull request #245 from danhedron/physics-cleanup-1
Physics cleanup
2016-11-04 20:41:30 +00:00
Daniel Evans
6ce9ecedcc Rewrite collision model data assignment 2016-11-03 23:26:09 +00:00
Daniel Evans
ca5649b840 Rewrite LoaderCOL and CollisionModel 2016-11-03 23:25:57 +00:00
Jannik Vogel
10c4f6dc86 Adapt for Bullet >= 2.84 2016-10-29 01:02:07 +02:00
Daniel Evans
684e32f4a9 Simplify Script system by removing SCMOpcodes
This was just a useless container for a set of modules. We only have
one module now so don't bother with it. This means we can remove some
more raw new & deletes from RWGame too.
2016-10-24 21:29:41 +01:00
Daniel Evans
fb4d9ea8c3 Use unique_ptr for GameWorld instance 2016-10-24 21:29:41 +01:00
Daniel Evans
ad998e8a80 Avoid allocating RWGame members where possible
These objects don't need to be dynamically allocated, they can
take on the same lifetime as RWGame itself.
2016-10-19 22:34:51 +01:00
Daniel Evans
657a726a9b Initialise logging outside of RWGame 2016-10-19 22:34:51 +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
e31c30efe9 Improve loading of hard-coded models 2016-10-10 20:49:44 +01:00
Daniel Evans
a861309936 Change special and cutscene logic to load and unload models 2016-10-07 01:04:48 +01:00
Daniel Evans
e1ab5b1f69 Use ObjectRenderer to draw Goals and Arrows 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
479aaab666 Fix header guard in LoaderIDE.hpp 2016-09-11 02:59:03 +01:00
Daniel Evans
46a68de406 Fix header guard in ModelData.hpp 2016-09-11 02:59:02 +01:00
Daniel Evans
707ee4b32a Rename ObjectData.hpp -> ModelData.hpp 2016-09-11 02:59:02 +01:00
Daniel Evans
e888d04303 clang-format files in rwengine/src/render 2016-09-09 21:13:20 +01:00
Daniel Evans
1e4d7ea133 clang-format files in rwengine/src/data 2016-09-09 21:13:20 +01:00
Daniel Evans
6444bca8db clang-format files in rwengine/src/loaders 2016-09-09 21:13:19 +01:00
Daniel Evans
83cfb4d1e3 clang-format files in rwengine/src/audio 2016-09-09 21:13:19 +01:00
Daniel Evans
869c15a4ea clang-format files in rwengine/src/script/modules 2016-09-09 21:13:19 +01:00
Daniel Evans
b064ad2aeb clang-format files in rwengine/src/script 2016-09-09 21:13:19 +01:00
Daniel Evans
f2eede5301 clang-format files in rwengine/src/objects 2016-09-09 21:13:19 +01:00
Daniel Evans
305737cc3d clang-format files in rwengine/src/items 2016-09-09 21:13:19 +01:00
Daniel Evans
80e6317c24 clang-format files in rwengine/src/engine 2016-09-09 21:13:19 +01:00
Daniel Evans
8534d7ff5d clang-format files in rwengine/src/dynamics 2016-09-09 21:13:18 +01:00
Daniel Evans
d5e853d23f clang-format files in rwengine/src/ai 2016-09-09 21:13:18 +01:00
Daniel Evans
9aa3af6703 clang-format files in rwengine/src/core 2016-09-09 21:13:18 +01:00
Daniel Evans
36a2c57d91 clang-format files in rwengine/src 2016-09-09 21:13:18 +01:00
Daniel Evans
43c2f00f47 Correct header guard and missing include in CollisionModel 2016-09-09 20:16:51 +01:00
Daniel Evans
239d19a310 Don't cast from wide chars to chars on windows 2016-09-09 00:07:17 +01:00
PerikiyoXD
62d0bf796a Fixed .native() and some cast errors
Signed-off-by: PerikiyoXD <perikiyoxd@gmail.com>
2016-09-08 21:17:30 +02: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
0be8586135 Improve indentation of loadLevelFile 2016-09-07 22:06:38 +01:00
Daniel Evans
930e10ce16 Rename parseDAT to loadLevelFile
There are many dat files in the game, but this function
only deals with the the level files
2016-09-07 22:06:38 +01:00
dan
5e0659fccf Remove now unused fixPath function 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
Jannik Vogel
fd6be733e0 Use correct int-width in State block 16 and 17 2016-09-02 15:33:45 +02:00
Daniel Evans
95a0e31484 Merge pull request #222 from JayFoxRox/radar-blips
Coloured radar-blips and radardisc z-order
2016-09-01 21:00:28 +01:00
haphzd
ae75254848 Fix mingw build 2016-09-01 00:56:14 +03:00
Daniel Evans
904817cb9e Merge pull request #221 from JayFoxRox/hide-objects
Script: Implement opcode_0363 (Object visibility)
2016-08-31 22:08:25 +01:00
Daniel Evans
53a77d26ed Merge pull request #220 from Mischa-Alff/tobj
Fixes #219: Take TOBJ data into account when building render lists
2016-08-31 22:07:50 +01:00
Jannik Vogel
1e265b0e9c Script: Correct colour/size for location-radar-blips 2016-08-31 00:28:58 +02:00
Jannik Vogel
270b0ce8be Script: Correct colour/size for object-radar-blips 2016-08-31 00:28:58 +02:00
Jannik Vogel
635d10abfa Script: Implement 0188 2016-08-31 00:28:58 +02:00
Jannik Vogel
6117be689d Script: Support MarkerOnly in 018B 2016-08-31 00:23:02 +02:00
Jannik Vogel
2fdde9a94f Draw colored radar-blips 2016-08-31 00:23:02 +02:00
Jannik Vogel
c379c5d5e4 Extend BlipData with colour/size 2016-08-31 00:23:02 +02:00
Jannik Vogel
7d96f28ab9 Seperate radar blip setup and drawing 2016-08-31 00:23:02 +02:00
Jannik Vogel
d9e202faba MapRenderer::draw cleanup 2016-08-31 00:23:02 +02:00
Jannik Vogel
10dba6dbf3 Use a triangle-fan for radar-sprites (allows outline drawing) 2016-08-31 00:23:02 +02:00
Jannik Vogel
de62bd2bd9 Only draw arrow-markers which are not hidden 2016-08-31 00:23:02 +02:00
Jannik Vogel
e99cfd3979 Only draw radar-blips which are not hidden 2016-08-31 00:23:02 +02:00
Jannik Vogel
2d3a8856da Draw blips after radar-north and player-marker 2016-08-31 00:23:02 +02:00
Jannik Vogel
e2a27711b2 Script: Implement opcode_0363 2016-08-31 00:12:38 +02:00
Daniel Evans
cd0f15bdb9 Use plain references for Local and Global script types 2016-08-30 19:57:47 +01:00
Daniel Evans
23752c33fa Fix post-mission cleanup: actually destroy objects 2016-08-30 19:57:47 +01:00
Daniel Evans
34bdfbacfa Remove old script modules 2016-08-30 19:57:47 +01:00
Daniel Evans
51cd277610 Implement various object related opcodes 2016-08-30 19:57:38 +01:00
Daniel Evans
0dd292ba28 Implement text opcodes 2016-08-30 19:56:41 +01:00
Daniel Evans
6f8364a9e8 Implement game opcodes 2016-08-30 19:56:39 +01:00
Daniel Evans
4aea8cc6aa Implement arithmetic opcodes 2016-08-30 19:51:25 +01:00
Daniel Evans
4344bf40c3 Implement VM opcodes 2016-08-30 19:51:25 +01:00
Daniel Evans
e6c62d15e5 Add generated stubs from script interface descriptions 2016-08-30 19:51:19 +01:00
Daniel Evans
d25c1a45a6 Add Script interfaces to support generated functions 2016-08-30 19:46:59 +01:00
Mischa Aster Alff
a56b25d4cd Change default object timeOff from 0 to 24
Remove now-useless check in ObjectRenderer
2016-08-28 14:32:34 +02:00
Mischa Aster Alff
397e8ecba8 Take TOBJ data into account when building render lists 2016-08-28 14:25:03 +02:00
Jannik Vogel
8e2dca9cfa MinGW: rwengine depends on mman 2016-08-23 23:09:52 +02:00
Jannik Vogel
bdfa30729f Replace uses of cmath constants by glm 2016-08-23 23:05:22 +02: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
f82d48d52a Add constants for non alphanumeric symbols 2016-08-23 00:05:25 +01:00
Daniel Evans
3123571894 Convert save games to use GameStringChar 2016-08-23 00:05:18 +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
e449a25071 Replace hack with correct font-map lookup function 2016-08-16 21:46:53 +01:00
Daniel Evans
222c3df68d Correct header guards in text related headers 2016-08-16 21:46:53 +01:00
Christoph Heiss
664451f63c Fix -Winconsistent-missing-override warnings
Fixes all occurences of this warning:
warning: '<method-name>' overrides a member function but is not marked
      'override' [-Winconsistent-missing-override]
2016-08-14 18:57:18 +02:00
Christoph Heiss
180ca626a5 Fix -Wmismatched-tags warnings
Fixes all occurences of this warning:
warning: '<type>' defined as a struct here but previously declared as a class
      [-Wmismatched-tags]
2016-08-14 18:57:18 +02:00
Daniel Evans
771fafbd0e Merge pull request #203 from danhedron/fix-vehicle-doors
Fix entering & exiting vehicle animations
2016-08-14 00:37:12 +01:00
Kamil Rytarowski
0ef224df90 Add preliminary NetBSD support
The iconv(3) function on NetBSD has a custom prototype due to old mistake in
the POSIX specification. The issue has been resolved but we keep using original
form with a constified parameter.
2016-08-13 21:33:04 +02:00
Daniel Evans
2f0b24c6ea Merge pull request #188 from danhedron/feature/cleanup-script
Script cleanup and remove old tool
2016-08-12 23:36:26 +01:00
Daniel Evans
e7d14ffc25 Add right side animations to vehicle entering / exit list 2016-08-12 23:31:04 +01:00
Daniel Evans
9ac62d6521 Fix crash when entering vehicles without doors 2016-08-12 23:26:00 +01:00
Daniel Evans
ebc312bc9e Merge pull request #198 from JayFoxRox/seats
Refactor seat storage, fixes entering wrong seat
2016-08-12 19:27:05 +01:00
Jannik Vogel
b0a2e79599 Refactor seat storage, fixes entering wrong seat 2016-08-12 16:39:29 +02:00
Jannik Vogel
a70931ee7c Remove screen-door fade-in effect 2016-08-12 15:57:17 +02:00
Jannik Vogel
778ca63803 Script: Initialize globals from SCMFile 2016-08-12 02:14:15 +02:00
Jannik Vogel
6277d7981b Script: Refactor player_near_point script functions 0xF5 - 0xFA 2016-08-12 02:14:15 +02:00
Jannik Vogel
f82beeefac Avoid error in substr if short modelname in LOD selection 2016-08-12 02:14:15 +02:00
Jannik Vogel
f591c66422 Avoid crash if scriptOnMissionFlag is not linked 2016-08-12 02:14:15 +02:00
Jannik Vogel
571fd08631 Replace strcasecmp with boost::iequals 2016-08-12 02:14:15 +02:00
Jannik Vogel
cb347143f8 Cleanup: Replace non-std C++ code 2016-08-12 02:14:15 +02:00
Jannik Vogel
bda0107bb1 Cleanup: include-what-you-use 2016-08-12 02:14:15 +02:00
Jannik Vogel
9d34a16fbc Cleanup: Remove empty FileArchive.hpp 2016-08-12 02:14:15 +02:00
Jannik Vogel
623e3c16a5 Fix Bullet #include paths 2016-08-12 02:14:15 +02:00
Daniel Evans
6ad05a3110 Remove unused UnimplementedOpcode exception 2016-08-12 01:02:24 +01:00
Daniel Evans
8a985309f9 Remove breakpoint system from ScriptMachine 2016-08-12 01:02:24 +01:00
Daniel Evans
0a982c1fca Remove useless include 2016-08-12 01:02:24 +01:00
Daniel Evans
d414991d68 Correct script include guards 2016-08-12 01:02:24 +01:00
Daniel Evans
d9aded5415 Cleanup SCMFile 2016-08-12 01:02:24 +01:00
Daniel Evans
81c1bb947d Improve debug output of script 2016-08-12 01:02:24 +01:00
Daniel Evans
d8841c7561 Remove include directory from rwengine for consistency 2016-08-07 14:41:45 +01:00
Daniel Evans
85b24231f5 Don't glob for files in rwengine CMakeLists.txt 2016-08-07 14:30:21 +01:00
darkf
0242868caa Use boost::make_iterator_range, as older boost lacks ranges in filesystem iterators 2016-08-06 08:43:28 -07:00
darkf
62532107ee Rewrite SaveGame::getAllSaveGameInfo to use boost::filesystem 2016-08-03 18:31:47 -07:00
darkf
40705a6666 Rewrite findPathRealCase to use boost::filesystem, move it to FileIndex 2016-08-03 18:31:47 -07:00
Timmy Sjöstedt
756ddf2df2 Removed GL_ARB_explicit_attrib_location extension 2016-08-03 19:00:20 +02:00
Timmy Sjöstedt
1500b6acbb Removed GL_ARB_uniform_buffer_object extension 2016-08-03 18:56:50 +02:00
darkf
6d6d772653 Open binary files in binary mode 2016-08-02 04:38:35 -07:00
darkf
77ca9054c6 De-initialize OpenAL 2016-08-02 04:38:34 -07:00
darkf
a574649dce Silence a lot of warnings 2016-08-02 04:31:12 -07:00
Daniel Evans
f3151fe0b7 Merge pull request #166 from danhedron/feature/input-improvements
Seperate Input state from binding
2016-08-01 20:06:37 +01:00
Daniel Evans
c48bc26c1e Merge pull request #158 from danhedron/feature/physics-overhaul-1
MotionStates & physics cleanup
2016-08-01 19:32:30 +01:00
haphzd
114abe2286 Windows/MinGW-W64 compatibility 2016-07-28 14:46:48 +03:00
Daniel Evans
c2fc2359e3 Add primitive sprint behaviour 2016-07-02 20:51:30 +01:00
Daniel Evans
91428fbff1 Use input state for player movement 2016-07-02 20:51:30 +01:00
Daniel Evans
cf2347ba02 Disable un-latching of vehicle parts during damage
The implementation currently causes crashes when vehicles are deleted
2016-07-02 20:37:05 +01:00
Daniel Evans
21d103642e Add bullet motion states for dynamic vehicle parts 2016-07-02 20:37:04 +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
b3fe87c2ea Clean up CollisionInstance and some of VehicleObject 2016-07-02 20:37:04 +01:00
Daniel Evans
280f83ecc7 Remove defunct grid code 2016-07-02 20:33:25 +01:00
Daniel Evans
cd0a11d899 Merge pull request #164 from JayFoxRox/fix-taxi
Stub Taxi-Mission
2016-07-02 17:51:04 +01:00
Daniel Evans
50e059daf0 Add GameInputState to store all control state 2016-07-02 17:23:01 +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