Commit Graph
909 Commits
Author SHA1 Message Date
asarium 059e149590 Add dynamic action programming system
This system adds the code necessary for letting content creators specify
complex events by specifying a simple, program-like sequence of
operations that will be executed by the engine when a certain event is
triggered.
2021-01-05 18:26:10 +01:00
Goober5000 b0fbf93055 fix model_update_instance to handle LODs
Add back the copying of model instance information to submodels in other LODs.  This was inadvertently removed in commit 88c1d8a02a.
2021-01-02 14:26:59 -05:00
Goober5000 4182ea7fae fix a couple of issues
Prevent model instances from being overridden when they conflict with the model.  Fixes #3062.

Also fixes another spot that might be a problem.
2021-01-02 01:08:54 -05:00
Goober5000 7a09a3d0c4 some bugfixes from the submodel rotation branch
Some things that clang noticed, plus a small usability improvement to the parsing of vectors in submodel properties.
2020-12-30 00:31:58 -05:00
Goober5000 55b902382c add documentation 2020-12-28 01:19:44 -05:00
Goober5000 3a5e49b0c3 Merge pull request #3021 from Goober5000/turret_refactor
some refactor and cleanup
2020-12-27 09:33:49 -05:00
asarium 522fa1ac6a Make model point picking more flexible
This works around the Windows only limitation where the standard random
function only returns up to 2^15 which limits how many vertices in the
model can be picked.

Since we already have a function that handles this properly and returns
values in the entire integer range, using that fixes that low limit.
2020-12-25 15:36:25 +01:00
Goober5000 21f6591be2 some refactor and cleanup
1) modify and prune some turret function definitions
2) clean up KeldorKatarn's submodel orientation parsing
2020-12-24 22:50:49 -05:00
Goober5000 a3135497f1 Merge pull request #3015 from Goober5000/gun_rotation_fix2
move gun_submodel_rotation from model to instance
2020-12-23 18:53:17 -05:00
Goober5000 8ef92c944d move gun_submodel_rotation from model to instance
Since instance-specific fields have been moved to polymodel_instance and submodel_instance, the gun_submodel_rotation field should also be moved.  This is also reworked a bit to keeping track of the rotation via the normal submodel instance angles.

This removes an unnecessary look_at field as well.
2020-12-23 00:45:31 -05:00
Goober5000 78c957c6bb properly restore turret angles after calculating matrix
Since angles are no longer written in three redundant places, the temporary hijacking of the turret angles in `model_make_turret_matrix` was overwriting the turret's proper position.  So this PR just saves the angles and restores them when the calculation is done.
2020-12-22 22:14:12 -05:00
Goober5000 b7b0d3a257 Merge pull request #3000 from Goober5000/model_instance_followup
another model to model_instance refactor
2020-12-22 21:31:14 -05:00
Goober5000 0c5b04c427 additional null checks
Found a null pointer CTD in modelanim that slipped through initial testing.  Also added some defense-in-depth null checks to scripting.
2020-12-22 04:22:10 -05:00
Goober5000 c18b1b63fd another model to model_instance refactor
Remove arc information from bsp_info and move it to submodel_instance.  Add a model instance to each debris chunk to keep track of it.
2020-12-20 14:51:05 -05:00
Goober5000 efe2d8476a 1) it's no longer necessary to call model_clear_instance before collision detection
2) call appropriate functions in collision detection because models might have instances
2020-12-18 13:46:49 -05:00
Goober5000 88c1d8a02a consolidate model instance code 2020-12-18 01:32:43 -05:00
Goober5000 7c92dd9f7c hoist model_get and model_get_instance out of a bunch of functions 2020-12-16 11:55:31 -05:00
Goober5000 b40833d76e CI fixes 2020-12-08 19:54:31 -05:00
Goober5000 b803b9f15c consolidate functions 2020-12-08 19:54:31 -05:00
Goober5000 b90fc2b3ad numeric to boolean 2020-12-08 19:54:31 -05:00
Goober5000 f0799d245e tweaks 2020-12-08 19:54:24 -05:00
Goober5000 3fdc5a3784 cur_turn_rate -> current_turn_rate 2020-12-08 12:33:29 -05:00
Baezon f2a367b75e NULL -> nullptr 2020-11-20 12:02:13 -05:00
Baezon 76a1b557b9 review tweaks and copy paste errors 2020-11-20 12:02:13 -05:00
Baezon aa8849f4e5 improved warp collision 2020-11-20 12:02:13 -05:00
Baezon d4c5693e97 fix animation 2020-11-13 14:22:49 -05:00
Phantom Hoover 7bcc18c622 Cache bitmap lookup buffers to avoid wasteful copying 2020-10-30 20:00:47 +00:00
asarium 9da5cc17a3 Add type safe handle for graphics buffers
This converts the previous plain-int type for a buffer handle to an
instance of our ID class which provides type safety.
2020-10-25 12:16:05 +01:00
Goober5000 8f469dd00c add warning for duplicate dockpoints
Just for sanity's sake.  This just displays a Warning without modifying the dockpoint name.  I considered an nprintf but figured a Warning was more appropriate.
2020-08-17 00:49:23 -04:00
Fabian Woltermann 7487fc3042 Address review comments 2020-06-23 17:44:52 +02:00
Fabian Woltermann 3d76c5dde0 Use modern loops to make travis happy 2020-06-22 11:07:13 +02:00
Fabian Woltermann 3bc5e7a729 Correct a casting error 2020-06-21 21:12:52 +02:00
Fabian Woltermann 74c87e2304 Trigger turret firing and turret fired anims 2020-06-21 19:25:50 +02:00
Fabian Woltermann ec494f0229 Change the model anim type enums to a enum class 2020-06-21 14:51:43 +02:00
Goober5000 1ba8c66a3a tweak the api 2020-06-07 22:47:13 -04:00
Goober5000 156bc2c5d4 fix the way SEXPs check ship distances
Retail has a hud_find_target_distance function that returns the distance between the player position and a bounding box.  This is useful for the HUD because it shows the distance to the perimeter of an object like a jump node or a large ship.  However, this function was re-used for the `distance` SEXP, resulting in the awkward situation where the distance is measured from one ship's center to another ship's bounding box.  This can lead to unexpected results and it also means that the SEXP returns a different distance when the arguments are swapped.

This PR deprecates the original SEXP and introduces the new SEXPs `center-distance` and `bbox-distance` which use consistent methods for both ships.  It also renames the `distance-ship-subystem` SEXP to `center-distance-subsystem` and adds a new `bbox-distance-subsystem` SEXP.
2020-06-07 22:36:46 -04:00
Tyler Blount 37bf779e77 Remove unused variable 2020-06-02 13:02:48 -06:00
Tyler Blount 28fd52aa51 Change tertiary thruster depth 2020-06-02 11:52:29 -06:00
wookieejedi 94bfb2fe75 Update cases of pow(x,2) to just multiply values
Having recalled that other SCP folks stated pow shoud not be used to do simple squaring, I figured it might be a good idea to update the two instances I found where that was the case.
2020-05-10 13:17:03 -04:00
Goober5000 9dd6bcf81d warn if there is a gap in the path sequence 2020-04-28 00:39:46 -04:00
Goober5000 3356edff2b warn if model paths do not have unique names 2020-04-28 00:16:06 -04:00
Frans Elliott 91edcc4b8c Added a comment to describe the mathematics of subobj_find_2d_bound.
Broke up the projection function to aid in clarity.
2020-04-12 23:43:12 -05:00
Frans Elliott 4139cd890c Cleaned up subsystem bounding box code. 2020-04-12 21:24:13 -05:00
Frans Elliott 44072c026c Force subsystem targetting reticle to be square, even on non-square aspect ratios. 2020-04-05 21:21:37 -05:00
Goober5000 d8e88c1644 oof 2020-03-05 22:31:13 -05:00
Goober5000 1926d3c341 oof, more changes 2020-03-05 20:49:16 -05:00
Goober5000 cacee6e5b8 a few more 2020-03-02 01:07:17 -05:00
pkubaj 3daa819042 Fix build on some LE platforms
Some platforms don't like those variables being unused.
2020-02-11 13:58:26 +01:00
pkubaj 4bb31f4e1b Fix build on big-endian architectures
swap_bsp_data() and swap_sldc_data() use those.
2020-02-10 15:49:52 +01:00
asarium 362645ce27 Reformat code with clang-format 2020-01-12 12:57:00 +01:00