1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-22 10:22:52 +01:00
Commit Graph

888 Commits

Author SHA1 Message Date
Filip Gawin
1ae0768725 Move temp data(instead of copying) 2018-02-14 22:32:08 +00:00
Anonymous Maarten
4ebc66b544 rwengine+rwgame: add missing includes 2018-02-13 22:15:26 +00:00
Filip Gawin
240b44af8b More fixes double promotion 2018-02-12 09:54:25 +00:00
Christoph Heiss
00bac4c531 Fix build on macOS. 2018-02-09 22:58:49 +00:00
Christoph Heiss
256e5e73ad Fix seat assignment on boats. 2018-02-09 22:53:23 +00:00
Lucas Eriksson
3e96ad9c92 Stop using default initialization onglm datatypes.
It results in undefined behaviour with glm 0.9.9
2018-02-09 22:33:10 +00:00
Filip Gawin
5bf92e5a0b Use range loops in SaveGame.cpp
I've added const at the beginning of file,
arrays converted to type std::array.
2018-02-06 19:19:09 +00:00
Filip Gawin
73a5daab82 Use range loop 2018-02-06 19:19:09 +00:00
Filip Gawin
de77efe225 Add check character for player 2018-02-02 18:12:28 +01:00
Filip Gawin
edcd918f72 Add check reading simplemodel 2018-02-02 18:12:15 +01:00
Florin9doi
e3e3642ec2 Save game location for Windows; fixes #375 2018-02-02 15:32:24 +00:00
Daniel Evans
e2eff314fd Weather: Fix linker error with old GLM 2018-02-01 02:43:48 +00:00
Daniel Evans
61e39aa505 Vehicle Object Component Rule evaluation 2018-02-01 02:43:48 +00:00
Daniel Evans
b35188ab94 correct comprules parsing. Use hex digits 2018-02-01 02:43:48 +00:00
Daniel Evans
9f68e4c95d Interpolate between weather types too 2018-01-30 01:54:15 +00:00
Daniel Evans
4490d91ee1 Load weather data into GLM types instead 2018-01-30 01:48:33 +00:00
Daniel Evans
5d4231f922 Use the WeatherCondition enum without directly indexing into entries 2018-01-30 01:48:33 +00:00
Daniel Evans
d3306922b2 Split Weather Data from the loader
- WeatherLoader now just a namespace with a single function
2018-01-30 01:48:33 +00:00
Florin9doi
e5694b383c Map flashing 2018-01-29 23:50:44 +00:00
Daniel Evans
6f9c3db52e Overahaul of rwviewer to simplify the code and improve usability
- Shared ViewerWidget has been removed. Now multiple instances exist
2018-01-27 21:44:18 +00:00
Daniel Evans
7743626acb Boats have a different DFF structure 2018-01-27 21:36:21 +00:00
Daniel Evans
65f51bc3c2 Skeleton collision effect handling 2018-01-15 21:50:13 +00:00
Daniel Evans
4f0109b17e Tidy up code in object physics handling 2018-01-15 21:50:13 +00:00
Daniel Evans
1c57fb5d98 Refactor Collision Procesing 2018-01-15 21:50:13 +00:00
Daniel Evans
ec9236422b Remove Custom material callback flag 2018-01-15 21:50:13 +00:00
Daniel Evans
869f09ba01 Prevent characters falling through the ground when placed
This was occuring when loading saves created in portland
2018-01-15 01:13:27 +00:00
Daniel Evans
1ed182c3f2 Correct splash texture loading 2018-01-13 18:56:27 +00:00
Filip Gawin
a60bc20585 Fix misaligned memory(UB)
X86 is able to deal with
misaligned memory, but it can hurt perf.
Other arch like for example mips
is not able to digest it.

So in order of portability we should get
rid of this UB.
2018-01-13 00:49:17 +00:00
Filip Gawin
09b7ead012 Add forgotten virtual dtor 2018-01-13 00:49:17 +00:00
Filip Gawin
3db102a13e braced initializer 2018-01-08 23:00:30 +00:00
Anonymous Maarten
91b4ec3ac7 rwengine: iwyu: reduce warnings in script subdirectory (+tabs2space) 2018-01-08 22:52:48 +00:00
Anonymous Maarten
c0a4d627af rwengine: iwyu: reduce warnings in render subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
d07beff43e rwengine: iwyu: reduce warnings in objects subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
0fc83a97e4 rwengine: iwyu: reduce warnings in loaders subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
e381a6c700 rwengine: iwyu: reduce warnings in items subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
fb58dfb082 rwengine: iwyu: reduce warnings in engine subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
a7203e00a0 rwengine: iwyu: reduce warnings in dynamics subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
e60fd6af6b rwengine: iwyu: fix warnings in data subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
9b98133a91 rwengine: iwyu: no warnings in core subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
428efd8fb1 openrw: iwyu: reduce warnings in audio subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
b6b53ffdad rwengine: iwyu: reduce warnings in ai subdirectory 2018-01-08 22:52:48 +00:00
Anonymous Maarten
29188f26f2 rwengine: iwyu: fix TextureArchive and BinaryStream 2018-01-08 22:52:48 +00:00
Anonymous Maarten
90acef28f7 rwlib: iwyu: reduce warnings
- use mapping file
- forward define FileContentsInfo, CutsceneTracks, GameTexts
- no more "#pragma once"
- add mapping file
2018-01-08 22:52:48 +00:00
Filip Gawin
6d80ce6424 Cleanup, use c++11 override
Maybe some of replace with
final, what do think?
2018-01-08 22:35:21 +00:00
Filip Gawin
caa5575573 Add check reading animation ptr 2018-01-08 23:09:43 +01:00
Filip Gawin
8cc8be5603 Small change, new -> make_shared. 2018-01-05 06:51:58 +00:00
Anonymous Maarten
382c28c9e3 rwengine: fix "initialization of 'specialPrefix' is skipped by 'default' label
vs2017: Compiler error C2361
2018-01-05 06:21:34 +00:00
Filip Gawin
ef4456e623 size() -> empty()
Empty has always
computational complexity O(1).
2017-12-17 01:48:49 +00:00
Miloslav Číž
57284fdade Fix particle rendering transform matrix 2017-11-20 21:48:00 +00:00
Filip Gawin
d934f1c9b0 Forgotten flush of packet 2017-11-17 22:53:42 +00:00
Anonymous Maarten
c5523d6728 rwengine: Remove usused SCMTypeInfoTable 2017-11-17 00:50:50 +00:00
Anonymous Maarten
6142e0bf80 rwengine: remove unused ScriptDisassembly 2017-11-17 00:50:50 +00:00
Anonymous Maarten
deb7db5faf rwengine: remove ScriptFunctionMeta->conditional + extended definition
Not used anywhere
2017-11-17 00:50:50 +00:00
Anonymous Maarten
4bf95cd903 rwengine: SCMMicrocode is not used anywhere 2017-11-17 00:50:50 +00:00
Anonymous Maarten
5299f4df08 spelling: yeild -> yield 2017-11-17 00:50:50 +00:00
Anonymous Maarten
85ac15078a rwengine: Removed unused functions and defines 2017-11-17 00:50:50 +00:00
Anonymous Maarten
1378931eba rwengine: throw runtime_error on shader error instead of straight exit 2017-11-17 00:50:50 +00:00
Anonymous Maarten
32fb5eb409 rwlib: LoaderIMG accepts rwfs::path 2017-11-17 00:50:50 +00:00
Anonymous Maarten
820c4bd25c rwengine: GameData accepts rwfs::path as path of game data 2017-11-17 00:50:50 +00:00
Daniel Evans
9c48b4424a Add build time option for CXX17 or boost filesystem 2017-10-31 00:55:19 +00:00
Anonymous Maarten
a40a2706a9 cmake: add support for include-what-you-use to check #include's
The output is currently very verbose and includes many false positives.
Adding a mapping file should solve this.

See
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUMappings.md
2017-10-29 20:40:57 +00:00
Anonymous Maarten
5dc707aaed cmake: make OpenAL an imported target 2017-10-29 20:40:57 +00:00
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