Commit Graph

964 Commits

Author SHA1 Message Date
theo3 3d1cb480c2 auto placement work 2022-03-16 17:54:50 -07:00
alex-botw 59c85ae8c2
ksys::eco::LevelSensor::calculatePoints (#90) 2022-03-16 09:59:31 +01:00
theo3 20f0a07ab0 AddAutoPlacementCreator action 2022-03-15 22:59:38 -07:00
theo3 4758d41d69 map debug stubs 2022-03-15 22:59:12 -07:00
Léo Lam 0c3df3ed97
ksys/phys: Add ShapeCast 2022-03-15 01:20:41 +01:00
Léo Lam 2a9e3318b5
ksys/phys: Finish ContactMgr 2022-03-14 01:10:28 +01:00
Léo Lam a9d5f88968
ksys/phys: Add ContactLayerCollisionInfoGroup 2022-03-13 23:57:28 +01:00
Léo Lam af2e33153a
Fix matching issue in ContactMgr::processImpulseEntries 2022-03-13 02:33:56 +01:00
Léo Lam e27c55361d
ksys/phys: Add impulse related ContactMgr functions 2022-03-13 02:28:34 +01:00
Léo Lam ad6c11f468
ksys/phys: Add SensorContactListener 2022-03-10 21:46:45 +01:00
Léo Lam 0e717ed15d
ksys/phys: Finish EntityContactListener 2022-03-10 12:58:34 +01:00
Léo Lam 8cbdcbf6ea
ksys/phys: Remove unnecessary include in physConversions 2022-03-08 23:10:12 +01:00
Léo Lam 9b1d08ca99
ksys/phys: Deduplicate hkpEntity -> RigidBody getters 2022-03-08 20:33:19 +01:00
Léo Lam a9ee6f839e
ksys/phys: Start adding EntityContactListener 2022-03-08 20:30:12 +01:00
Léo Lam c11a33c5ab
ksys/phys: Implement ContactMgr::registerContactPoint for queries 2022-03-08 12:59:44 +01:00
Léo Lam 6830bcbb64
ksys/phys: Add SphereBasedClosestPointQuery 2022-03-08 00:11:52 +01:00
Léo Lam 62959cc554
ksys/phys: Start adding ClosestPointQuery and iterator stuff 2022-03-07 12:44:38 +01:00
Léo Lam 6229e5d41a
ksys/phys: Move Constraint stuff to a separate folder 2022-03-06 22:38:43 +01:00
Léo Lam a1f9eea300
ksys/phys: Add QueryContactPointInfo 2022-03-06 21:35:36 +01:00
Léo Lam 8a6b47d132
ksys/phys: Add more ContactMgr functions 2022-03-06 16:10:13 +01:00
Léo Lam 683108b75c
ksys/phys: Add CollisionInfoBase::enableLayer/disableLayer
The pattern seems to show up very often in CollisionInfoBase users
2022-03-06 12:41:41 +01:00
Léo Lam 5dde8ced89
ksys/phys: Add ContactPointInfo iterator
It's mostly the same thing as LayerContactPointInfo::Iterator.
With some functions inexplicably marked as virtual.
2022-03-06 01:37:57 +01:00
Léo Lam 631a0ab388
ksys/phys: Finish LayerContactPointInfo
Clean up the iterator stuff and fix some inaccuracies.
2022-03-06 00:30:05 +01:00
Léo Lam ba2d81b7b8
ksys/phys: Implement ContactMgr functions used by ContactListener 2022-03-05 19:34:01 +01:00
Léo Lam 88a0a9eb69
Use sead::OffsetList::robustRange() when possible to simplify iteration 2022-03-05 19:13:06 +01:00
Léo Lam d839816081
ksys/phys: Finish ContactListener 2022-03-05 17:16:32 +01:00
Léo Lam 1518cc4960
lib: Update sead 2022-03-04 21:48:06 +01:00
Léo Lam f802ee16c9
ksys: Add CoreInfo to avoid hardcoding number of cores everywhere 2022-03-04 15:29:32 +01:00
Léo Lam eca99d22f2
ksys: Move CollisionMasks out of RigidBody so it can be forward declared 2022-03-03 15:59:49 +01:00
Léo Lam a222e40180
ksys/phys: Add more ContactListener functions and Havok prereqs 2022-03-03 12:29:28 +01:00
Léo Lam 26f4aea77c
ksys/phys: Fix accuracy issue for storeToVec3
Allows us to get rid of a bunch of local variables that only existed
to force the entire vector to be loaded.
2022-03-03 11:52:35 +01:00
Léo Lam b2a66ca858
ksys/phys: ContactPointInfoEx -> ContactLayerContactPointInfo
Turns out it's the equivalent to ContactLayerCollisionInfo.
2022-03-02 01:25:11 +01:00
Léo Lam 220cb53468
ksys/phys: Add ContactLayerCollisionInfo 2022-03-01 20:10:56 +01:00
Léo Lam 35cc8dd9ee
ksys/phys: Add RigidBody::setCollisionInfo 2022-03-01 19:50:47 +01:00
Léo Lam 6077a63ea6
ksys/phys: Unify ContactPointInfo/CollisionInfo with InstanceSet 2022-03-01 19:31:44 +01:00
Léo Lam 11dafc6ac3
ksys/phys: Add CollisionInfo 2022-03-01 19:28:11 +01:00
Léo Lam 1ee012858c
ksys: Rename RigidContactPoints to match param files 2022-03-01 19:12:29 +01:00
Léo Lam 18d0c53293
ksys/phys: Add some ContactListener prerequisites 2022-03-01 19:11:54 +01:00
Léo Lam 7f52270cdd
ksys/phys: SensorCollisionMask layer2 -> ignored_layer 2022-03-01 13:24:18 +01:00
Léo Lam f852073fd4
ksys/phys: Finish SensorGroupFilter 2022-03-01 13:15:51 +01:00
Léo Lam 7fab958e72
ksys/phys: Rename collision filter info structs for more clarity
And consistency.
2022-02-28 22:09:53 +01:00
Léo Lam c18d9dc4b5
ksys: Add constants NumRegular{Entity,Sensor}Layers to reduce magic numbers 2022-02-28 21:31:30 +01:00
Léo Lam e219eccf0d
ksys/phys: Start implementing SensorGroupFilter 2022-02-28 20:58:04 +01:00
Léo Lam c32557b793
ksys/phys: Add more EntityGroupFilter functions 2022-02-28 17:29:49 +01:00
Léo Lam b3b97a93aa
UI/PauseMenuDataMgr: Use getItems() instead of mItemLists.list1 2022-02-27 23:34:55 +01:00
Léo Lam 63bf3d2fa4
Match PauseMenuDataMgr::removeGrabbedItem 2022-02-27 23:32:51 +01:00
Léo Lam a1fd80bd1c
Rename PauseMenuDataMgr addGrabbedItem to removeGrabbedItem
The previous name was completely wrong, whoops.
2022-02-27 22:50:55 +01:00
Léo Lam df36d65665
Revert "Add #ifdef declarations for NON_MATCHING code"
This reverts commit 42807160cf.

It makes searching for NON_MATCHING comment descriptions much less
convenient in most text editors or IDEs, and we want the function
CSV to be the single source of truth for function statuses. Having
a function marked as matching but not built because of a stray #ifdef
would be bad.
2022-02-27 12:50:52 +01:00
savage13 a564186002
Add PauseMenuDataMgr::grabbedItemStuff() (#88) 2022-02-26 22:42:09 +01:00
savage13 17750b5225
Add PauseMenuDataMgr::x_28 (#87) 2022-02-26 16:29:50 +01:00
savage13 9d35c385f9
Match two small functions in PauseMenuDataMgr (#86) 2022-02-26 15:01:44 +01:00
savage13 c804527d7a
PlacementMap: Add x_0, x_4(); change u16 mStaticCompoundId to s16 mStaticCompundActorId (#85) 2022-02-20 23:50:28 +01:00
savage13 4e21ee7613
getDragonItemDropPosition (#84)
getDragonItemDropPosition - NON_MATCHING fadd arguments mismatch
2022-02-19 13:32:13 +01:00
Léo Lam a6268d3815
ksys/phys: Add CharacterControllerParam shape creation 2022-02-13 19:43:56 +01:00
Léo Lam dfcfbbe4a4
ksys/phys: Move common headers (Defines, MaterialMask) out of System/ 2022-02-13 19:08:08 +01:00
Léo Lam 3512b78627
ksys/phys: Finish RigidBodyParam (add createEntityShapeBody) 2022-02-13 18:59:03 +01:00
Léo Lam db72086c68
ksys/phys: Finish RigidBodyFromShape (add factory functions) 2022-02-13 18:44:48 +01:00
Léo Lam 6727376291
ksys/phys: Merge RigidBodyFactory into RigidBodyFromShape
RigidBodyFactory is right between RigidBodyFromResource and
RigidBodyFromShape functions, and some Factory functions are known
to be in the same TU as RigidBodyFromShape functions.

Some factory functions also use FromShape non-static member functions.
2022-02-13 12:47:12 +01:00
Léo Lam 56826a9bd0
ksys/phys: Implement RigidBodyParam::createRigidBody
Also includes a bunch of fixes to the shape and param classes.
2022-02-13 02:23:47 +01:00
Léo Lam fc8d4b5c68
Fix matching issue in ksys::phys::motionTypeFromText 2022-02-13 01:16:52 +01:00
Léo Lam 0c3ee0dd84
ksys/phys: Finish RigidBodyFromShape 2022-02-12 18:41:27 +01:00
Léo Lam 2dc8daf02f
ksys/phys: Implement ListShapeRigidBody 2022-02-12 17:04:00 +01:00
Léo Lam bc66305e3d
ksys/phys: Add ListShape 2022-02-12 16:43:48 +01:00
Léo Lam 4a1bb88bd5
ksys/phys: Declare factory functions for SphereShape/SphereRigidBody 2022-02-12 10:51:02 +01:00
Léo Lam cc3d3ad03d
ksys/phys: Implement PolytopeRigidBody 2022-02-10 20:28:31 +01:00
Léo Lam fce2c2dc10
ksys/phys: Implement parts of PolytopeShape::updateHavokShape 2022-02-10 20:14:02 +01:00
Léo Lam 9c1f080884
ksys/phys: Add most of PolytopeShape 2022-02-10 19:32:52 +01:00
Maide dbf6cd5117
LowPrioThreadMgr (#82) 2022-02-09 21:46:46 +01:00
Léo Lam 97f3d2943b
Game: Finish HardModeManager 2022-02-09 19:36:26 +01:00
Léo Lam 2028797c8a
ksys: Fix typos in SafeDelete comments 2022-02-09 03:01:09 +01:00
Léo Lam 5f92a7b959
ksys: Remove unnecessary null checks in SafeDelete
Deleting a null pointer has no effect -- the compiler automatically
inserts a null pointer check.
2022-02-09 02:59:55 +01:00
Léo Lam 808b21530a
ksys: Document safeDelete and safeDeleteArray 2022-02-09 02:59:34 +01:00
Léo Lam ce1b6900ab
ksys/act: Fix matching issues in BaseProcJobQue 2022-02-08 22:52:51 +01:00
Léo Lam d893fd5ead
Remove unnecessary usages of sead::StorageFor
Turns out they are just value-initialised aggregates.
2022-02-08 22:11:09 +01:00
Léo Lam 635be7c1e4
ksys/phys: Add RigidBodyFromResource 2022-02-07 17:47:33 +01:00
ThePixelGamer 199c7d2552 ksys/map: Implement PlacementAreaMgr 2022-02-06 13:16:17 -06:00
Léo Lam 154852b763
ksys/phys: Implement CylinderWaterRigidBody 2022-02-04 13:12:08 +01:00
Léo Lam e58c1a4a44
ksys/phys: Start implementing HavokCylinderWaterShape 2022-02-03 22:51:50 +01:00
Léo Lam ced69f3e7d
ksys/phys: Implement CylinderWaterShape 2022-02-03 18:33:22 +01:00
Léo Lam 872d02a037
ksys/phys: Add CylinderRigidBody 2022-02-03 13:38:28 +01:00
Léo Lam 7875b0ad55
ksys/phys: Group shapes into folders to declutter RigidBody/Shape 2022-02-03 13:02:43 +01:00
Léo Lam 7c25fd08eb
ksys/phys: Implement CylinderShape 2022-02-03 12:44:04 +01:00
Léo Lam a2fa63495c
ksys/phys: Fix a regalloc diff in CapsuleShape::setScale 2022-02-03 12:44:04 +01:00
Léo Lam 52efb18af7
ksys/phys: Finish CapsuleShape and add CapsuleRigidBody 2022-02-02 23:20:47 +01:00
Léo Lam 5d3fd32988
ksys/phys: Add BoxWaterRigidBody::make 2022-02-02 16:18:04 +01:00
Léo Lam 55164640d5
ksys/phys: Add BoxWaterRigidBody 2022-02-02 15:36:30 +01:00
Léo Lam 2af9e079d0
ksys/phys: Add BoxWaterShape 2022-02-02 11:17:02 +01:00
Léo Lam d277eac80e
ksys/phys: Move BoxShapeParam::createShape to BoxShape::make
The same BoxShapeParam class is used for two different shape classes
(BoxShape and BoxWaterShape) so it's more natural to move the factory
function to the shape class itself
2022-02-01 17:08:03 +01:00
Léo Lam 6b302518fb
ksys/phys: Finish BoxRigidBody 2022-02-01 16:21:51 +01:00
Léo Lam a8915c9b05
ksys/phys: Finish BoxShapeParam 2022-01-31 19:54:06 +01:00
Léo Lam 26bd1402f2
ksys/phys: Mark BoxShapeParam::createShape as const 2022-01-31 19:48:27 +01:00
Léo Lam e596296799
ksys/phys: Use util::allocStorage in CapsuleShape to simplify allocation
Removes the need to write sizeof(T) and alignof(T).
2022-01-31 12:43:50 +01:00
Léo Lam 5c6f24368d
ksys/phys: Implement BoxShape 2022-01-31 11:10:47 +01:00
Léo Lam ff2e2f9ff7
ksys/phys: Start adding BoxRigidBody 2022-01-30 19:28:36 +01:00
Léo Lam 716916d863
ksys/phys: Rename WaterCylinder to CylinderWater for consistency
"Water" is used as a suffix (e.g. a box of water is called "BoxWater",
not "WaterBox").

This naming convention has the benefit of keeping related shape types
next to each other in the source file list.
2022-01-30 18:24:10 +01:00
Léo Lam a6428425a5
ksys/phys: Implement most of RigidBodyFromShape 2022-01-30 18:13:06 +01:00
Léo Lam 30533da83d
ksys/phys: Merge physShapeParam param classes with RigidBody/Shape 2022-01-30 17:40:17 +01:00
Léo Lam 6519cce927
ksys/phys: Start merging physShapeParam with RigidBody/Shape
Turns out we already have a bunch of ShapeParam classes in
physShapeParam and parts of RigidBody/Shape are just
duplicates -- whoops.

ShapeParam is renamed to ShapeParamObj to avoid any confusion
with the (.*)ShapeParam classes.
2022-01-30 17:07:34 +01:00
Léo Lam 6263107301
ksys/phys: Start adding RigidBodyFromShape 2022-01-30 16:45:16 +01:00
Léo Lam 891b95efff
ksys/phys: Fix a bool flag being defined as u32 in RigidBodyFactory 2022-01-30 11:40:11 +01:00
Léo Lam 682897091a
ksys/phys: Rename some variables that were missed in 60e2b166 2022-01-30 02:21:42 +01:00
Léo Lam 60e2b1664f
ksys/phys: Rename Shape/Body classes to avoid confusion
What we currently call BoxBody, CapsuleBody, etc. is actually
BoxShape, CapsuleShape, etc. (those classes encapsulate Havok shapes)

So this commit renames Body -> Shape and Shape -> ShapeParam.
2022-01-30 02:20:12 +01:00
Léo Lam a1a283acf7
ksys/phys: Add more InstanceSet members 2022-01-30 00:55:12 +01:00
Léo Lam d9eeeb6ecc
ksys/phys: Add RigidBodySet 2022-01-30 00:17:02 +01:00
Brian Savage 3bb33875b3 More PlacementMap functions 2022-01-29 17:37:42 -05:00
Brian Savage 7a3c0b261a Add initial PlacementMap functions 2022-01-29 07:51:03 -05:00
Léo Lam 532e83a2fa
ksys/phys: Declare all remaining RigidBody functions 2022-01-29 13:01:57 +01:00
Léo Lam 61201ca54b
ksys/phys: Rename RigidBody/UserTag broadphase border callbacks 2022-01-29 12:48:38 +01:00
Léo Lam 10d3f129b0
ksys/phys: Add RigidBody velocity calc and warping functions 2022-01-29 01:30:34 +01:00
Léo Lam e1f3e551cb
ksys/phys: Add more RigidBody functions 2022-01-27 01:54:56 +01:00
Léo Lam b728917ef4
ksys/phys: Add RigidBody collision filter info functions
Including a bunch of BitFields additions so we can get the desired
codegen without sacrificing readability or flexibility.
(The alternative would be building masks and masking manually.)

getCollisionFilterInfo was changed to return a u32 instead of
EntityCollisionFilterInfo because a collision filter info mask
can be either an EntityCollisionFilterInfo or a ReceiverMask.

(Also at some point we'll probably want to rename
EntityCollisionFilterInfo because that is also used for sensor
rigid bodies and not just for entities.)
2022-01-25 00:15:29 +01:00
Léo Lam 4531c033a3
ksys/phys: Rename SystemGroupHandler mFilterIndex -> mLayerType
It is actually a ContactLayerType -- there's a comparison against
the contact layer type in RigidBody.
2022-01-24 12:38:05 +01:00
Léo Lam a33ebd2130
ksys/phys: Introduce {First,Last}{Entity,Sensor} constants to improve clarity 2022-01-23 17:00:44 +01:00
notyourav 3f793b24d9
Merge pull request #75 from savage13/PlacementMap
Add PlacementMap, stubs: PlacementMapMgr and PlacementMapMgrMapArray
2022-01-23 00:33:57 -08:00
Léo Lam dcd1a856bd
ksys/act: Document some BaseProcMgr iteration functions 2022-01-22 21:06:10 +01:00
Léo Lam 719c5f02a7
ksys/phys: Add more RigidBody functions (motion, collision mask) 2022-01-22 20:09:57 +01:00
Léo Lam c36c03c6fb
ksys/phys: Start adding ContactListener 2022-01-21 15:27:55 +01:00
Léo Lam c292675646
ksys/phys: Rename MemSystem to System
It was called MemSystem in the IDB because of a string in
ksys::InitializeApp that referred to MemSystem initialisation as
"Physics Memory System"; however that string actually referred to an
initialisation step for the physics system, not to the name of the
subsystem itself.
2022-01-21 12:43:24 +01:00
Léo Lam 98c69ebaef
ksys/phys: Add one more RigidBody function 2022-01-21 12:20:05 +01:00
Brian Savage d11a43df25 Added missing include for sead::Buffer 2022-01-20 11:57:06 -05:00
Brian Savage c028190362 Use sead::Buffer<PlacementMap> 2022-01-20 10:17:58 -05:00
Brian Savage 1182f2fd75 Further fixes to variables types 2022-01-20 09:37:30 -05:00
Brian Savage 7d97bb6f40 Moved functions to correct places/files, formatting 2022-01-19 19:21:05 -05:00
Léo Lam a291d84b2b
Havok: Move hkpConstraintInstance to the correct folder 2022-01-20 01:11:54 +01:00
Léo Lam 178108d42c
ksys/phys: Update some RigidBody flag names for clarity 2022-01-19 15:23:01 +01:00
Brian Savage d61a13e4bd Add PlacementMap, stubs: PlacementMapMgr and PlacementMapMgrMapArray 2022-01-18 18:52:13 -05:00
Léo Lam c20142ab7b
ksys/phys: Rename flag 0x80 to RigidBody::Flag::HighQualityCollidable 2022-01-19 00:37:32 +01:00
Léo Lam 52e2111ff3
ksys/phys: Add even more RigidBody functions 2022-01-19 00:33:49 +01:00
Léo Lam c343c3d9e3
ksys/phys: Mark RigidBody::m9 as pure virtual 2022-01-18 20:24:10 +01:00
Léo Lam 98aeceed40
ksys/phys: Add more RigidBody functions
And fix a bunch of hkVector4f / hkSimdFloat32 interop matching issues.
2022-01-18 19:04:27 +01:00
Léo Lam 87bca00e68
ksys/phys: Add more RigidBody functions and Havok utils 2022-01-17 22:29:21 +01:00
Léo Lam adad4553d6
ksys/phys: Add more RigidBody functions 2022-01-17 19:27:49 +01:00
Léo Lam ddef936b26
ksys/phys: Add RigidBody::isEntity to make certain checks clearer
The pattern we want to use is:

```
if (isEntity())
  do entity stuff (e.g. get entity motion accessor)
```

or

```
if (!isEntity())
  return;

do entity stuff
```

That's clearer than

```
if (isSensor())
  return;

do entity stuff
```

because the fact that !isSensor() is equivalent to isEntity() is not
always immediately clear.
2022-01-17 17:22:27 +01:00
Léo Lam a2cba75b19
ksys/phys: Rename MotionAccessor classes to reflect entity/sensor split 2022-01-17 17:16:43 +01:00
Léo Lam 8dd5608b79
ksys/phys: Rename RigidBody "isMassScaling" mode to "isSensor"
That also explains the comparison against 1 (ContactLayerType::Sensor)
in the constructor.
2022-01-17 17:02:11 +01:00
Léo Lam 392c0973c7
ksys/phys: Add a bunch of easy RigidBody functions 2022-01-17 16:58:22 +01:00
Léo Lam 05abdf7e77
ksys/phys: Add easy RigidBodyRequestMgr functions 2022-01-17 01:52:21 +01:00
Léo Lam 4eb07ca88c
ksys/phys: Start adding RigidBodyRequestMgr 2022-01-16 23:29:48 +01:00
Léo Lam 71fda30853
ksys/util: Add LockFreeQueue 2022-01-16 23:21:52 +01:00
Léo Lam cba2a5b8b0
ksys: Declutter Utils by creating new Utils/Container folder 2022-01-16 22:24:00 +01:00
Léo Lam 99b913f86d
ksys/phys: Move RigidBodyRequestMgr to its own header 2022-01-16 15:55:42 +01:00
Léo Lam 2a8dc8ad25
ksys/phys: Add two RigidBody init functions (and prerequisites) 2022-01-16 15:50:56 +01:00
Léo Lam 2ed36c7dc0
ksys/phys: Add prerequisites for RigidBody (RigidBodyParam fixes)
Seems to have fixed _ZN4ksys4phys11InstanceSet14sub_7100FBB00CEPNS0_9RigidBodyEPNS0_14RigidBodyParamE
2022-01-16 13:00:35 +01:00
Léo Lam 544c33e2eb
ksys/phys: Finish RigidBodyMotionProxy 2022-01-16 02:36:36 +01:00
Léo Lam a5b87ccf97
ksys/phys: Fix #include type for Havok header 2022-01-15 19:59:06 +01:00
Léo Lam cee7b169af
ksys/phys: Finish RigidBodyMotion 2022-01-15 19:57:59 +01:00
Léo Lam c6f0a3cb4c
ksys/phys: Rename flags for clarity in RigidBody 2022-01-15 18:37:35 +01:00
Léo Lam 7fbd3a0e8d
ksys/phys: Remove useless semicolon 2022-01-15 18:15:03 +01:00
Léo Lam b298ec2b28
ksys/phys: Add remaining RigidBodyMotionProxy functions (except one) 2022-01-15 18:13:27 +01:00
Léo Lam ea9cc90f29
ksys/phys: Fix indirect <cstring> include in RigidBodyMotion 2022-01-14 13:14:24 +01:00