Commit Graph

24 Commits

Author SHA1 Message Date
Mitchell Richters 5984fda8a1 - PlayerAngle: Repair issues with `addadjustment()` method following changes in 4ffe004483 that were affecting negative input. 2021-04-06 06:01:54 +10:00
Mitchell Richters 029f8807df - Make `360. / 2048.` a constant expression and replace all uses throughout code. 2021-04-01 10:42:22 +11:00
Mitchell Richters aa35b6a479 - binaryangle.h: Fix constexpr issue on GCC builds following bf2d8078a4. 2021-04-01 08:32:07 +11:00
Mitchell Richters bf2d8078a4 - PlayerHorizon: Replicate changes to `settarget()` and `processhelpers()` methods from 39fe9efaff. 2021-03-31 19:44:50 +11:00
Mitchell Richters 80ff918b17 - gameinput.h: For PlayerAngle struct methods `settarget()`, properly set target as angle + delta between angle & target within method and not game-side. 2020-11-26 17:26:29 +11:00
Mitchell Richters 3f14886830 - binaryangle.h: Return `BAngToBAM()` as `int64_t` to handle signed values without overflowing on unsigned values. 2020-11-23 10:49:47 +11:00
Mitchell Richters 89048c8e70 - binaryangle.h: Use cmath.h functions for `binangle`/`lookangle` trig methods as well. 2020-11-23 08:40:18 +11:00
Christoph Oelckers b89cd6d14c - cleanup on binaryangle.h
* why the reference parameters? These should be passed by value.
* removed the < and > operators from binangle class because angles should not be ordered.
* instead of calling the CRT trig functions, use the ones from cmath.h which are more reliable
2020-11-22 21:54:39 +01:00
Mitchell Richters 5ba2e7863d - binaryangle.h: Add `asbuildf()` method to all classes and use where appropriate. 2020-11-22 21:18:12 +01:00
Mitchell Richters c42771228d - binaryangle.h: Reverse order of `binangle` and `lookangle` classes and declare `binangle` class a friend of `lookangle`.
* In-prep for addressing #185.
2020-11-22 21:18:11 +01:00
Mitchell Richters 35845a63e2 - binaryangle.h: Expand all classes with bit-shift operators and `binangle`/`lookangle` classes with some lt/le/ge/gt bools to have parity with the `fixedhoriz` class. 2020-11-22 21:18:11 +01:00
Mitchell Richters 42689e02c4 - gameinput.cpp: Define `getincanglebam()` and slightly clean up other getincangle*() functions. 2020-11-22 21:18:11 +01:00
Mitchell Richters 85bb248309 - binaryangle.h: Extend file with sine/cosine inline helper functions. 2020-11-22 21:18:02 +01:00
Mitchell Richters 5011b10549 - binaryangle.h/cpp: Inline the functions created in 271eb1c3fa. No real need to have a separate file for these. 2020-10-11 15:34:18 +11:00
Mitchell Richters 271eb1c3fa - binaryangle.h/cpp: Hook up FSerializer and use within Duke for saving objects. 2020-10-11 00:10:53 +11:00
Mitchell Richters fca846272e - gamecontrol: Initial setup of `PlayerAngle` struct and deployment within Duke.
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters 082336e5f8 - buildhoriz: Implementation of pitch and BAM conversion code.
* Determined maximum horizon able to be handed by engine in Q16.16 format is 280039127.
* Re-did pitch math to work on this known maximum and standardised pitch around -90/90 degrees as it should be.
* Because pitch is now -90/90 and not ~-188/188, m_sensitivity_y probably requires re-scaling.
2020-10-07 13:29:04 +11:00
Christoph Oelckers b289e6bc5e - cleanup. 2020-09-13 19:27:05 +02:00
Mitchell Richters 1354d52c05 - Major cleanup of Q16.16 utilisation within games and engine.
* Remove fix16.h/cpp and utilise library from m_fixed.h.
* Extend m_fixed.h with two inline functions for int to/from float operations.
* Replace fix16_floor operations with those from xs_Float.h
* Replace multiple Q16.16 conversions from 0 to just be 0.
* Replaced all found in-game bit-shifts and multiplications/divisions with inline functions from m_fixed.h
* Replaced many casts of FRACUNIT as double in SW's panel.cpp as it is converted to double by way of type promotion.
* Fixed missed precision fixes in SW's panel.cpp where some types weren't declared correctly.
* Replaced 100+ `Cos()/Sin() >> 16` operations for Blood with inline functions `CosScale16()/SinScale16()`.
2020-09-01 23:00:47 +10:00
Mitchell Richters f046c5eb6b - fix compiler warnings and actual issues with in-game horizon.
* Can't have a - operator on unsigned int in the binangle class.
* Changed fixed horiz class from unsigned to signed as in-game horizon is a signed integer.
2020-07-24 01:08:50 +10:00
Christoph Oelckers 945dbc9f7e Use type safe angle and horizon classes for the render interface
These need to be robust and not allow implicit conversions.
2020-07-23 17:03:11 +02:00
Christoph Oelckers 9742bc72aa - created a horizon class as well. 2020-07-23 17:02:59 +02:00
Christoph Oelckers ab8006cc40 - make binaryangle.h compile. 2020-07-23 17:02:59 +02:00
Christoph Oelckers 7d414fcfa5 - binary angle class draft. 2020-07-22 21:16:29 +02:00