Randy Heit
3357af32e5
Generalize FxArrayElement to work with all numeric elements (not just 32-bit ints)
2016-04-03 16:21:41 -05:00
Randy Heit
0cc2705b99
Added A_LogFloat
2016-04-03 16:12:35 -05:00
Christoph Oelckers
70b8afc5ec
- fixed: A_CheckLOF did the trace pitch calculation wrong.
2016-04-03 21:26:57 +02:00
Christoph Oelckers
02a586e6b2
- removed a redundant Vec3Offset call in A_SpawnParticle.
2016-04-03 21:03:49 +02:00
Christoph Oelckers
0eb35d6c6e
Merge branch 'master' into floatcvt
...
# Conflicts:
# src/dobjtype.cpp
# src/dobjtype.h
2016-03-30 09:47:25 +02:00
Randy Heit
b6e3358b1c
Add A_SetUserVarFloat and A_SetUserArrayFloat
2016-03-29 22:41:37 -05:00
Randy Heit
e2711a74e7
Add float user vars for DECORATE
...
- PClass::Extend now takes alignment into consideration.
2016-03-29 21:48:57 -05:00
Christoph Oelckers
d87f861e87
Merge branch 'master' into floatcvt
...
# Conflicts:
# src/p_spec.cpp
# src/p_spec.h
2016-03-28 22:23:41 +02:00
Christoph Oelckers
263051a77b
- removed a few unnecessary #includes.
2016-03-28 22:20:25 +02:00
MajorCooke
4eee1c7af1
Fixed: A_FaceMovementDirection was backwards.
2016-03-27 14:21:07 +02:00
Christoph Oelckers
228c447a02
- fixed: A_FireCustomMissile used the player position as offset.
2016-03-27 14:20:14 +02:00
Christoph Oelckers
26ff2f73d7
- floatified P_TryMove and the sliding and bouncing code.
2016-03-27 13:29:58 +02:00
Christoph Oelckers
696fde69b8
- moved the bot support code from AActor::Tick to a subfunction in the bot sources. No need to pollute a main game file with this stuff.
2016-03-26 01:30:28 +01:00
Christoph Oelckers
fb8e03d5eb
- floatified FLineOpening.
...
- some smaller fixes.
2016-03-25 18:43:37 +01:00
Christoph Oelckers
2b33601d00
- The fixed_t type for the VM also is not needed any longer and was removed.
2016-03-25 15:50:39 +01:00
Christoph Oelckers
8cdfbeea01
- made AActor::__pos a genuine float vatiable.
2016-03-25 15:43:20 +01:00
Christoph Oelckers
3a598d672e
- removed the angle_t type from the VM, now that nothing in the interface requires it anymore.
2016-03-25 14:55:01 +01:00
Christoph Oelckers
a3b687bc4e
- renamed PARAM_DANGLE macros to PARAM_ANGLE, now that the old angle_t type is no longer used in the VM interface.
2016-03-25 13:23:07 +01:00
Christoph Oelckers
21340c6eba
- floatified the rest of thingdef_codeptr.cpp and got rid of the remaining fixed_t and angle_t parameters in VM-accessed function. The VM should now be free of those types completely.
2016-03-25 12:57:22 +01:00
Christoph Oelckers
f76524f459
- some cleanup on P_RailAttack plus a bit of parameter floatification in thingdef_codeptr.cpp
2016-03-25 00:59:14 +01:00
Christoph Oelckers
4d22b346f4
- floatified the remaining fixed point variables accessible through DECORATE. PROP_FIXED_PARAM is no longer used anywhere.
2016-03-24 23:50:29 +01:00
Christoph Oelckers
7a26318bf0
- floatified friction.
2016-03-24 22:50:03 +01:00
Christoph Oelckers
6c9e5b03c8
- floatified meleerange, pushfactor and radiusdamagefactor,
2016-03-24 21:31:04 +01:00
Christoph Oelckers
e077510773
- floatified MaxTargetRange and MeleeThreshold.
2016-03-24 20:56:59 +01:00
Christoph Oelckers
c66ff5939d
- floatified AActor::bouncefactor and wallbouncefactor.
2016-03-24 20:43:35 +01:00
Christoph Oelckers
4a79602325
- floatification of g_shared.
...
- rewrote FraggleScript's movecamera function because it was utterly incomprehensible.
2016-03-24 01:46:11 +01:00
Christoph Oelckers
6557f3b8c8
- floatified quake and weapon code
2016-03-23 20:45:48 +01:00
Christoph Oelckers
2dbd79cc8d
- floatified the return data from Trace().
2016-03-23 18:07:04 +01:00
Christoph Oelckers
70d87f94f2
Merge branch 'master' into floatcvt
...
# Conflicts:
# src/p_acs.cpp
# src/r_utility.cpp
# src/thingdef/thingdef_codeptr.cpp
# src/version.h
2016-03-23 14:15:24 +01:00
MajorCooke
b16e696157
- Added offset and angle parameters to A_CheckBlock.
...
- Includes 2 flags, affixed by CBF_: AbsolutePos, and AbsoluteAngle.
- AbsolutePos: Absolute position of where to check.
- AbsoluteAngle: Angle parameter is used as is, not added onto the actor's current angle.
2016-03-23 14:05:31 +01:00
Christoph Oelckers
0d1fbcf65f
- flattened the following commits by Major Cooke:
...
* Added falloff parameter to A_QuakeEx.
- Treated just like A_Explode's 'fullradiusdamage' parameter, where the quake will fall off from this distance on out to the edge. Default is 0, which means no falloff.
- Credits to MaxED and Michaelis for helping.
* - Added HighPoint parameter to QuakeEx.
- Allows fine tuning of where the quake's maximum or minimum occurs, in tics. This must be a range between [1, duration).
- For up or down scaling quakes, this sets the quake to reach maximum sooner or start minimizing later.
- For both, this indicates when the strongest will occur. Default is 0, or in the middle.
The original commits were nearly impossible to find in the convoluted commit tree, so I think it's preferable to have one clean commit instead.
2016-03-23 14:03:10 +01:00
Christoph Oelckers
7c87479eea
- parameter rework of several spawning functions.
2016-03-23 13:31:12 +01:00
Christoph Oelckers
f60eac8dc0
- floatified FMapThing, dropoffz and GetBobOffset
2016-03-23 12:21:52 +01:00
Christoph Oelckers
f8cf4bcf3d
- trimmed down the AActor Spawn interface and removed all non-float variants.
...
This still needs some cleanup in a few calling functions.
2016-03-23 10:42:41 +01:00
Christoph Oelckers
6b3c0ecbd3
- floatified viewheight variables and some related code.
2016-03-22 18:06:08 +01:00
Christoph Oelckers
af427b80bd
- did some cleanup and consolidation on damage factor code while converting it all to floating point.
...
- made armor properties floating point.
2016-03-22 16:35:41 +01:00
Christoph Oelckers
1eb106e2c5
- floatification of some alpha parameters.
2016-03-22 13:35:16 +01:00
Christoph Oelckers
a652c061f6
- converted g_strife to full floating point use, except the floor height changing stuff in A_LightGoesOut.
2016-03-22 12:42:27 +01:00
Christoph Oelckers
cf79e1cb6d
- fixed some leftover fixed point remnants in g_hexen.
...
- made the full-coordinate version of P_SpawnPlayerMissile use float coordinates.
2016-03-22 00:30:56 +01:00
Christoph Oelckers
4155e84a1c
- made player_t::crouchoffset and FPlayerStart's coordinates doubles and added a float version of divline_t so that I could complete the conversion of Hexen's game code.
...
- consolidated the actor based damage factor code which was repeated multiple times in various damage inflicting functions.
2016-03-22 00:06:58 +01:00
Christoph Oelckers
c830801da3
- g_hexen almost done except for 3 things that require more extensive changes.
2016-03-21 22:20:10 +01:00
Christoph Oelckers
f1602882c8
- added a no-parameter Spawn function for inventory items that never show on the map, because the coordinate and replacement parameters will always be 0 for them.
...
- started converting g_hexen.
Most importantly this removes CHolyWeave as it is just a specialized version of A_Weave with far more convoluted use of parameters.
2016-03-21 14:00:05 +01:00
Christoph Oelckers
4e60ea0252
- made AActor::alpha a floating point value
...
- replaced some uses of FRACUNIT with OPAQUE when it was about translucency.
- simplified some overly complicated translucency multiplications in the SBARINFO code.
2016-03-21 12:18:46 +01:00
Christoph Oelckers
1ff4bb419c
- made AActor::gravity and FMapThing::gravity floats.
2016-03-21 00:51:19 +01:00
Christoph Oelckers
289cdfbefd
- made AActor::floorclip a double.
2016-03-20 23:42:27 +01:00
Christoph Oelckers
cff8e51811
- converted AActor::height to double.
2016-03-20 20:55:06 +01:00
Christoph Oelckers
8362c6a856
- conversion of floorz to double.
2016-03-20 19:52:35 +01:00
Christoph Oelckers
b81080ce08
- converted most of g_heretic to float.
2016-03-20 16:51:42 +01:00
Christoph Oelckers
0bdb65c477
- made AActor::radius a double.
...
This means that all files in g_doom are now fully converted.
2016-03-20 15:04:13 +01:00
Christoph Oelckers
ec58e70078
- replaced ceilingz with a floating point variable, also in FCheckPosition.
2016-03-20 13:32:53 +01:00
Christoph Oelckers
ada5097e34
- converted scale variables in AActor, FMapThing and skin to float.
2016-03-20 12:13:00 +01:00
Christoph Oelckers
51b05d331d
- replaced AActor::vel and player_t::Vel with a floating point version.
...
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.
Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
Christoph Oelckers
f332a098cd
- reworked calls to P_SpawnPlayerMissile, P_AimLineAttack and P_LineAttack to use floating point angles.
2016-03-18 00:43:05 +01:00
Christoph Oelckers
aa09cbdada
- renamed some functions and fixed a few more conversion errors.
2016-03-17 00:07:37 +01:00
Christoph Oelckers
b140d71c49
- several fixes.
2016-03-16 22:29:35 +01:00
Christoph Oelckers
671291227e
- first stage of converting actor angles to float complete
...
Patched up everything so that it compiles without errors again. This only addresses code related to some compile error. A large portion of the angle code still uses angle_t and converts back and forth.
2016-03-16 12:41:26 +01:00
Christoph Oelckers
c64eee5b15
Merge branch 'master' into float
...
# Conflicts:
# src/g_heretic/a_hereticweaps.cpp
# src/p_map.cpp
# src/p_mobj.cpp
# src/p_things.cpp
# src/portal.cpp
2016-03-15 00:16:13 +01:00
Christoph Oelckers
651817fad7
- made AActor::velx/y/z and player_t::velx/y fixedvec's.
...
(This commit is 95% search & replace with only a few places where velz was used as a local variable changed.)
2016-03-12 14:11:43 +01:00
Christoph Oelckers
161d03231a
- added custom math routines for reliability.
2016-03-11 15:45:47 +01:00
Christoph Oelckers
f8ebfb541e
- use typedefs for TVector<double> etc.
...
(Better have this out of the way before messing around with this stuff...)
2016-03-10 20:45:45 +01:00
Christoph Oelckers
3d367d585d
- did some profiling which revealed that P_PointInSector was called needlessly often. Did some optimization to the MultiBlock iterators to avoid this problem.
2016-03-10 14:22:18 +01:00
Christoph Oelckers
899389e6a4
- link actors into blockmap through linked line portals.
...
Links through sector portals are not done because nearly all the checks can be performed without doing this so if it works without there's no need to add more processing time.
Will have to see if there's cases left where such a link is needed and if so, whether there's better options to do it.
For line portals such links are necessary to have proper collision detection with actors that are currently transitioning the portal.
2016-03-08 14:41:37 +01:00
Randy Heit
8b9a0da5ef
That was hard to read
2016-03-07 09:58:52 -06:00
MajorCooke
af50a79e55
- Fixed: ScaleY was not defaulting to ScaleX when specified as 0, which is how the behavior originally was in 2.8. This behavior can now be toggled with a new boolean, 'usezero'.
2016-03-07 09:02:34 -06:00
Christoph Oelckers
5175d56129
- made adjustments to P_LineAttack and P_RailAttack to deal with altered angles by passing through a non-parallel portal.
...
- fixed: P_FindFloorCeiling set the floorsector for a new ceilingheight.
Note: P_DrawRailTrail still needs to be changed, at the moment rail trails through portals will not work correctly.
2016-03-06 21:58:36 +01:00
Christoph Oelckers
caf2ca0df7
- fixed: CallStateChain must never allow a jumping function to set the chain's overall result to successful.
2016-03-04 15:11:20 +01:00
Christoph Oelckers
81b634a798
- preparation for making Trace portal aware: Added a new flag Trace_PortalRestrict, so that I could disable portals without static offset for P_LinePickActor and A_CheckLOF, because both depend on the target info being retainable which requires a static offset.
2016-03-04 01:13:16 +01:00
MajorCooke
59ad6206de
Added CBF_NOACTORS to A_CheckBlock.
...
- Self explanatory, doesn't count actors as blocking them.
2016-03-02 20:35:54 -06:00
MajorCooke
7f672039bf
Cleanup.
2016-03-03 02:58:44 +01:00
MajorCooke
fb3769a730
Added offsetforward to A_CheckLOF.
...
- offsetforward is to A_SpawnItemEx's x offset property, just like offsetwidth is to y offset.
2016-03-03 02:58:43 +01:00
Christoph Oelckers
f5fd0df077
- made P_AimLineAttack work through sector portals.
...
Note: Test output not removed yet!
2016-03-02 20:44:02 +01:00
Randy Heit
c160121f45
Add float casts to DECORATE for the sake of completeness
2016-03-01 11:36:15 -06:00
Randy Heit
55142078d8
Normalize line endings
2016-03-01 09:47:10 -06:00
Christoph Oelckers
b4a002a07f
- preparations for allowing hitscans through portals.
...
To allow processing the hit through an arbitrary portal without reference to the portal group table, P_AimLineAttack and P_LineAttack need to pass some more info than just the linetarget.
We need the relative positions of shooter and target within the visual reference of the other to calculate proper angles and we need to know if such a portal was crossed at all, because a few things, e.g. seeker missiles won't work with them.
- fixed setup of target acquisition for the Mage Staff.
The pre-acquired seeker target was never passed to the spawned projectiles.
2016-03-01 16:39:31 +01:00
Randy Heit
7c9fd12fc0
Don't generate code to call DECORATE cast functions
...
- All the cast functions do is return their parameter, so skip the
function call and use the parameter directly.
2016-02-29 22:26:05 -06:00
Randy Heit
92f74634d6
Remove FxParameter and use a single function instead
2016-02-29 22:08:06 -06:00
Randy Heit
fb8d8dc775
Remove "state" from "Invalid state parameter" error message
...
- It's confusing to see this from inside an anonymous function. Actually,
maybe it should be reworded altogether?
2016-02-29 21:44:12 -06:00
Randy Heit
cb1d9597f2
Allow if {} else if {}
with DECORATE
...
This is as opposed to `if {} else { if {} }`, which is what was required
previously to express the same construct.
2016-02-29 21:40:10 -06:00
Randy Heit
f23c0121c5
Use new type system with DECORATE
2016-02-29 21:11:59 -06:00
Christoph Oelckers
d4f87203bd
- added portal awareness to several functions.
...
* Arch-Vile resurrection
* Boom point pushers (due to complete lack of z-handling only for line portals.)
* A_RadiusGive
These also require a more thorough collection of portal groups than simple position checks.
2016-02-28 23:08:32 +01:00
Christoph Oelckers
8be690fbf2
- fixed type truncation warning.
2016-02-28 21:16:16 +01:00
alexey.lysiuk
fcb38a9419
Made index of VM intrinsic functions unsigned
...
No more 'comparison of integers of different signs: int and unsigned long' warning
2016-02-27 15:14:13 +02:00
Christoph Oelckers
eafd2519b4
- fixed a few incorrect uses of AngleTo function.
...
- added portal offsetting to all AproxDistance, AngleTo and Vec*To members of AActor.
- optimized displacement retrieval so that the most common case with no offset retrieves a constant null-vector which can be optimized away fully by the compiler.
- early out in P_GetOffsetPosition if there's no portal lines nearby, so that the common case can skip the traverser completely even on maps with line portals.
2016-02-26 11:52:50 +01:00
Randy Heit
fd78686679
Add clamp() to DECORATE
2016-02-25 14:31:37 -06:00
Randy Heit
7f57f68ce1
Added GetSpawnHealth() and GetGibHealth() for DECORATE
2016-02-25 10:08:08 -06:00
Randy Heit
a862f728b6
Add remaining VM-supported floating point operations to DECORATE
...
- These are:
* exp
* log
* log10
* ceil
* floor
* acos
* asin
* atan
* tan
* cosh
* sinh
* tanh
2016-02-25 09:41:49 -06:00
Randy Heit
8ee820042f
Tablified the DECORATE floating point operations (sqrt,cos,sin)
2016-02-25 09:23:46 -06:00
Christoph Oelckers
e11da06e69
- some preparations for actor interpolation through wall portals.
2016-02-25 00:41:31 +01:00
Randy Heit
326907f6ab
Cleanup parsing of DECORATE intrinsics
...
- Split specific parsing for each intrinsic out of ParseExpression0 and
into their own functions.
- Instead of reserving keywords for intrinsics, identify them by name
within TK_Identifier's handling.
2016-02-23 19:39:29 -06:00
Randy Heit
1f09341d2b
Let min/max pre-solve for 2+ constants, even if there are non-constants
2016-02-23 16:37:52 -06:00
Randy Heit
1ffb7ad109
Add min and max to DECORATE
2016-02-23 16:26:00 -06:00
MajorCooke
c3ffeb1e9d
A_RadiusGive Missile check fix
...
- Don't use isMissile(). Check directly for the flag at the moment of calling and not the default. Otherwise, things changing themselves will still be ineligible for non-missile checks.
2016-02-22 11:30:44 -06:00
alexey.lysiuk
89ca14a587
Fixed memory leak caused by return statement parsing
2016-02-22 14:24:34 +02:00
Randy Heit
70c663b253
Revert "Add PARAM_STATE_NOT_NULL for the A_Jump* functions"
...
- This reverts commit cab39973df
.
I was wrong. DoJump never allowed jumping to NULL states.
2016-02-21 19:21:39 -06:00
Randy Heit
19af8a3a82
Change error message for missing return
2016-02-20 23:14:14 -06:00
Randy Heit
e7b9e7e955
Rename A_Int/A_Bool/A_State to int/bool/state
...
- This is an effort to emphasize that these are just type casts. Now they
look like function-style casts with no action function styling.
They do no magic joojoo at all. The only reason they exist is because
the DECORATE parser can only parse return statements that call a
function, so these satisfy that requirement. i.e. *return int(666);* is
identical to *return 666;* (if the parser could handle the latter).
2016-02-20 22:05:17 -06:00
Randy Heit
cab39973df
Add PARAM_STATE_NOT_NULL for the A_Jump* functions
...
- Now that state jumps are handled by returning a state, we still need a
way for them to jump to a NULL state. If the parameter processed by this
macro turns out to be NULL, Actor's 'Null' state will be substituted
instead, since that's something that can be jumped to.
2016-02-20 21:52:29 -06:00
Randy Heit
5e298173f7
Redo ACTION_RETURN macros so they can be treated like return statements
2016-02-20 21:34:58 -06:00
Randy Heit
81314a6cd6
Revert "- fixed a few occurences where ACTION_RETURN_* eliminated the side effect of its argument when no return value was requested."
...
This reverts commit 7ede77c1d2
.
2016-02-20 21:27:42 -06:00
Christoph Oelckers
7ede77c1d2
- fixed a few occurences where ACTION_RETURN_* eliminated the side effect of its argument when no return value was requested.
...
This macro should not be used on function calls that actually perform an action aside from calculating the return value!
2016-02-20 13:13:53 +01:00