Commit graph

150 commits

Author SHA1 Message Date
Rachael Alexanderson
410a1aa24c Merge https://github.com/coelckers/gzdoom 2017-01-20 20:56:02 -05:00
Christoph Oelckers
314e49f791 - let A_SpawnProjectile, A_FireProjectile, A_SpawnItem(Ex) and A_ThrowGrenade return the spawned actors to the calling code.
- fixed the return type checks in CallStateChain. These made some bogus assumptions about what return prototypes to support and would have skipped any multi-return function whose first argument was actually usable.
2017-01-20 12:39:51 +01:00
Rachael Alexanderson
e52772745b Merge https://github.com/coelckers/gzdoom 2017-01-19 23:07:14 -05:00
Christoph Oelckers
c880b26d98 - scriptified MorphProjectile and CustomSprite.
This should for now conclude actor class scriptification. The remaining ten classes with the exception of MorphedMonster are all too essential or too closely tied to engine feature so they should remain native.
2017-01-20 01:11:36 +01:00
Rachael Alexanderson
8a198591f4 Merge https://github.com/coelckers/gzdoom 2017-01-19 11:58:53 -05:00
Christoph Oelckers
42f3ccc602 - scriptified a few parts of p_pspr.cpp.
- added a speed parameter to A_Lower and A_Raise in the process.
2017-01-19 13:26:46 +01:00
Magnus Norddahl
53a79ca215 Merge remote-tracking branch 'gzdoom/master' into qzdoom
# Conflicts:
#	src/r_things.cpp
2017-01-18 04:09:16 +01:00
Christoph Oelckers
14f2c39e58 - scriptified cht_Give and cht_Take and made them virtual function of PlayerPawn so that this can be better configured for mods that want other options in here.
- improved the class pointer to string cast to print the actual type it describes and not the class pointer's own type.
- fixed: The 'is' operator created non-working code when checking the inheritance of a class pointer, it only worked for objects.
2017-01-17 17:34:39 +01:00
Magnus Norddahl
1c3440e391 Merge remote-tracking branch 'gzdoom/master' into qzdoom
# Conflicts:
#	src/r_plane.cpp
#	src/r_plane.h
2017-01-16 06:03:21 +01:00
Christoph Oelckers
267600826f - sxriptified key and puzzleitem base classes. 2017-01-15 10:37:54 +01:00
Christoph Oelckers
e16713492f - scriptified A_FreezeDeath(Chunks). 2017-01-14 18:26:59 +01:00
Christoph Oelckers
96777273c4 - scriptified ASoundSequence.
- exported virtual Actor.MarkPrecacheSounds function.
2017-01-14 14:37:29 +01:00
Christoph Oelckers
f83444f3cc - exported the sound sequence interface to scripting.
- split out the map data definitions from base.txt into their own file.
2017-01-14 13:02:08 +01:00
Rachael Alexanderson
d707f1c22e Merge https://github.com/coelckers/gzdoom 2017-01-14 00:38:26 -05:00
Christoph Oelckers
40e7fa5be2 - scriptified the RandomSpawner.
- fixed: String constants were not processed by the compiler backend.
- added an explicit name cast for class types.
2017-01-14 02:05:52 +01:00
Magnus Norddahl
1c4e0c6385 Merge remote-tracking branch 'gzdoom/master' into qzdoom 2017-01-14 01:56:18 +01:00
Christoph Oelckers
4be0767d7b - scriptified the moving camera. 2017-01-13 22:13:03 +01:00
Christoph Oelckers
51cc7feb4c - scriptified the particle fountains. 2017-01-13 19:29:54 +01:00
Magnus Norddahl
1d941c9839 Merge remote-tracking branch 'gzdoom/master' into qzdoom
# Conflicts:
#	src/r_plane.cpp
#	src/win32/zdoom.rc
2017-01-13 13:21:10 +01:00
Christoph Oelckers
d73db8c1e8 - added a 'local' parameter to the A_Log family.
- complete "give quakes their own damage type." (was only partially saved.)
2017-01-13 11:48:05 +01:00
Christoph Oelckers
85a84b5e94 - scriptified FastProjectile. 2017-01-13 00:35:56 +01:00
Rachael Alexanderson
a3ad22a460 Merge https://github.com/coelckers/gzdoom 2017-01-11 18:54:43 -05:00
Christoph Oelckers
ea163f3898 - exported FCheckPosition to the VM and completed the parameter lists for Actor.CheckPosition and Actor.TryMove. 2017-01-12 00:26:16 +01:00
Christoph Oelckers
5ef9429ae4 - added the ability to attach a constructor or destructor to an internally defined struct.
There are a few which require explicit native construction or destruction that need to be exported to the VM, e.g. FCheckPosition.
The VM cannot handle this directly, it needs two special functions to be attached to handle such elements.
2017-01-11 23:46:03 +01:00
Rachael Alexanderson
799d0d1091 Merge remote-tracking branch 'remotes/gzdoom/master' 2017-01-10 19:39:12 -05:00
Rachael Alexanderson
0362deefc4 Merge commit '6552e5a7a18cb334dfa1000e0c52836df2edec95' 2017-01-10 19:38:15 -05:00
Christoph Oelckers
de4153ceaf some groundwork for the implementation of dynamic arrays
- created script exports for all relevant functions with all integral types.
- created script side definitions for the underlying data types.
- added a void pointer type so that the prototype for the pointer array can use a generic type every pointer can be assigned to.
2017-01-11 00:57:31 +01:00
Christoph Oelckers
3e4f799bbc - made Actor.DamageMobj virtual. 2017-01-10 21:31:52 +01:00
Christoph Oelckers
06c97d898b - added a new parameter to A_CustomRailgun to customize the inaccuracy induced by a moving target. 2017-01-10 20:08:23 +01:00
Rachael Alexanderson
c2d01522f0 Merge https://github.com/coelckers/gzdoom 2017-01-04 21:55:01 -05:00
Christoph Oelckers
3b7eb849a7 - fixed: The default minimum and maximum distances for A_Teleport were swapped. 2017-01-04 23:56:41 +01:00
Rachael Alexanderson
2d1a5e6b36 Merge https://github.com/coelckers/gzdoom 2017-01-01 21:44:56 -05:00
Christoph Oelckers
9948189193 - scriptified PowerProtection and PowerDamage.
- made ModifyDamage calls iterative instead of recursive. With going through the VM they'd be too costly otherwise.
- small optimization: Detect empty VM functions right when entering the VM and shortcut them. This is to reduce the overhead of virtual placeholders, which in a few cases (e.g. CanCollideWith and ModifyDamage) can be called quite frequently.
2017-01-01 23:11:48 +01:00
Major Cooke
ff3487d389 Merge branch 'OverlayAlpha' into OverlayExtension9
# Conflicts:
#	src/p_pspr.cpp
#	src/r_draw.cpp
#	wadsrc/static/actors/actor.txt
#	wadsrc/static/actors/constants.txt
2016-12-26 14:37:22 -06:00
ZZYZX
44c19b5ad9 Changed zero RenderRadius logic - negative values now used for 'no rendering', restored old logic with max(radius, renderradius) 2016-12-25 13:40:21 +02:00
ZZYZX
fcd8a0ce92 Reverted STYLE_None change to P_LinkRenderSectors, implemented zero RenderRadius that effectively disables rendering of an actor entirely 2016-12-25 13:35:03 +02:00
ZZYZX
87b23d160b Ported RenderRadius and related code from gzdoom branch 2016-12-25 13:09:32 +02:00
Christoph Oelckers
d4c0ee9e43 - address bad use of pitch in A_CustomMissile.
This function calculated everything correctly but ultimately set the vertical velocity wrong. Most importantly this meant that the actual velocity vector and actor pitch - if CMF_SAVEPITCH was used - did not match.
Since this bug has been present since the pitch parameter was added, this deprecates A_CustomMissile and replaces it with a properly implemented A_SpawnProjectile function and handling the compatibility case with a new flag and a scripted wrapper function.
All internal uses of A_CustomMissile have been replaced as well.
2016-12-24 14:46:34 +01:00
Major Cooke
1bcebb091a Added option to check the location for resizing, changing the return into a bool. 2016-12-18 11:59:24 +01:00
Major Cooke
3023af8223 - Added A_SetSize(double newradius, double newheight = -1).
- Changes the calling actor's radius and height.
2016-12-18 11:59:24 +01:00
Christoph Oelckers
aa758159c9 - renamed Actor.NoiseAlert to Actor.SoundAlert to deconflict with the same-named action special. 2016-12-11 12:10:05 +01:00
Christoph Oelckers
94287518e0 - added a virtual CanCollideWith script method that can be overridden to do class specific collision checks.
This will get called for both actors taking part in a collision, if one of the two calls returns false it will immediately abort PIT_CheckThing with no collision taking place at all.
2016-12-04 10:13:36 +01:00
Christoph Oelckers
82c2670617 - removed redundant DoDropItem function. A_DropItem already exists and can be used instead. 2016-12-02 11:42:33 +01:00
Christoph Oelckers
86544086df - allow the VM to run on one global stack per thread.
It is utterly pointless to require every function that wants to make a VM call to allocate a new stack first. The allocation overhead doubles the time to set up the call.
With one stack, previously allocated memory can be reused. The only important thing is, if this ever gets used in a multithreaded environment to have the stack being declared as thread_local, although for ZDoom this is of no consequence.

- eliminated all cases where native code was calling other native code through the VM interface. After scriptifying the game code, only 5 places were left which were quickly eliminated. This was mostly to ensure that the native VM function parameters do not need to be propagated further than absolutely necessary.
2016-11-30 17:15:01 +01:00
Christoph Oelckers
47884f8a71 - fixed a few bad declarations. 2016-11-30 16:19:13 +01:00
Christoph Oelckers
fb3bde0e0d - cleaned up and grouped the virtual function declarations in AActor to ensure that everything has been properly exported.
- removed the native parts of SpecialBlastHandling. Since this is called from the script side and the only remaining native remnant was an empty function it's now 100% scripted.
2016-11-30 01:39:06 +01:00
Christoph Oelckers
bbf62132d8 - added a larger batch of function exports.
- cleaned up the virtual function interface of APlayerPawn which still had many virtual declarations from old times when class properties were handled through virtual overrides. None of this makes sense these days anymore.
2016-11-30 01:25:51 +01:00
Christoph Oelckers
9193466572 - scriptified ASecurityCamera and AAimingCamera.
This concludes this round of script converesions of internal classes.
2016-11-29 20:16:14 +01:00
Christoph Oelckers
a13e23dbe6 - scriptified some trivial stuff from g_shared. 2016-11-29 19:50:34 +01:00
Christoph Oelckers
0c969746d0 - scriptified Hexen's spike, which was the last remaining item in the game directories.
- added a BlockThingsIterator for scripts.
2016-11-29 18:42:48 +01:00