Commit Graph

40 Commits

Author SHA1 Message Date
Mitchell Richters a67c126129 - Blood: Extend 99508e6f15 to find picnum of previous frame in all previous frame's tile indices if the current frame's tile index doesn't match.
* Allows more interpolation magic.
* Revealed an issue with `interpolatedanglef()` that was undetected. Removed in place of a binangle version returned as floating point build.
2021-07-29 19:23:00 +10:00
Mitchell Richters 019922dcf1 - Fix constexpr issue with `interpolatedanglef()` since `fmod()` isn't available as constexpr. 2021-07-29 18:38:07 +10:00
Mitchell Richters 99508e6f15 - Blood: Perform interpolation between frames for each tile coordinate when there is more than one frame and the picnum between frames match. 2021-07-29 17:39:22 +10:00
Christoph Oelckers 7283de0084 - fixed some very noisy warnings in two headers. 2021-05-12 21:47:32 +02:00
Christoph Oelckers 8003ab6fa3 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-02 22:37:46 +02:00
Christoph Oelckers 4069a5096a - scriptified Exhumed's 2D content (minus the programmatic textures.) 2021-04-30 20:08:36 +02:00
Mitchell Richters 92d1d7fbde - Fix potential overflow issue in `binangle::tosigned()` and `getincanglebam()`. 2021-04-15 08:25:08 +10:00
Mitchell Richters 656705bcd7 - binangle: Add `signedrad()` and `signeddeg()` methods for consistency with the unsigned methods.
* Left out from f254eeb465.
2021-04-11 17:02:44 +10:00
Mitchell Richters e76f63e2c0 - Consolidate all game interpolation code into inline functions. 2021-04-11 16:45:35 +10:00
Mitchell Richters f254eeb465 - binaryangle.h: Remove `lookangle` class and replace use with `binangle`.
* Added in fca846272e to deal with signed adjustments but its just not needed.
* Made better use of `binangle`/`fixedhoriz` class getters and setters than before as well.
2021-04-11 15:45:53 +10:00
Christoph Oelckers 057b8a7354 - cleanup of bvectan family of functions.
This can be greatly simplified to a single bvectangbam function using atan2 directly.
2021-04-10 12:54:29 +02:00
Mitchell Richters 8ebd1a9ebc - binaryangle.h: Clean up `HorizToPitch()` since we're on the new renderer. 2021-04-10 10:06:30 +10:00
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 ba90f444dd - PlayerAngle: Repair issues with `addadjustment()` method following changes in 4ffe004483 that were affecting negative input. 2021-04-05 21:41:11 +10:00
Mitchell Richters 88695ef554 Merge branch 'master' into newrenderer2 2021-04-01 16:49:07 +11: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
Christoph Oelckers 829be9b56b - use value parameters for arguments in binaryangle.h. 2021-03-24 09:02:07 +01:00
Christoph Oelckers 0c7f05a416 - let the clipper work exclusively on Build coordinates. 2021-03-22 23:40:25 +01: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