-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core - Add PhysX Ropes as "connector wires" for Infantry-Phone/GSA/External #1290
base: master
Are you sure you want to change the base?
Conversation
The current implementation was made by taking Advanced Towing code as an example. Attaching the rope's end to a "Franta Can" and attaching that to the player's pelvis is a good way to accurately place the rope on the player, there may be better ways though. At the moment, the rope handler doesn't generate a visible rope for GSAs or other units (shared radios), need to investigate that further. |
How does the rope going to the pelvis look? Would it be better to have it go to the hand? |
Shrinking would still render the can whereas hiding doesn't (possibly deleting from, or even just skipping other unneeded data in, memory too), though. |
Oh, yeah, hiding is fine too |
Depends, if there is an animation that puts the hand to the player's ear and maybe renders a phone handset like in ACRE Animations, sure. Otherwise I think it's best to keep the generic pelvis connection to symbolise that it's connected to the radio on the player's vest, just like the standard ACRE Gesture touches the player's vest to key any radio. I've experimented further with player->player and GSA->player connections, the rope start object always has to be a transport, the smallest which classifies as such is a traffic cone with light. |
No phone, but I believe the |
TBF, the cable needs to be tethered to something and then you'll need to route it through your uniform/vest to minimize getting tangled. ^ And being tethered in the middle it's quick to find the ends. |
In both of these cases (infantry phone or using some one elses radio) you would not be routing the cable through your own gear, just holding the telephone on the end of the cable. Going to the pelvis looks really ugly in that screenshot. I'd appreciate a setting to either choose my own position or disable it. Off |
Sure thing, a setting to disable is in the tasks. How do you think it would look in the hand though when the left hand is on the rifle or other personal equipment? Would you also lock the player in the "hand on vest" animation the entire time he's using the infantry phone? |
I think it would be cleaner to use some dedicated helper object instead of the |
What sort of dedicated object do you suggest? Or do you mean creating a custom one that's hidden by default, for better performance? |
Yes, I mean that the rope helper should be a dedicated class for that, preferably with a model that's just empty. Attaching a can feels dirty. |
Honestly probably yeah, when you pick up the handset you're presumably using it to talk so I think it makes sense to keep the hand near the head. |
It seems that spawning the rope on top of the interaction's position noticeably reduces the distance from which the "disconnect" interaction can later be seen and used. Exact cause unclear, but it's most likely the rope itself and not the helper object, since it also happens on infantry phone interaction (which doesn't use a helper). For some reason on both GSAs the rope doesn't attach to the player but dangles free, might be an issue where the rope collides with the GSA model. I tested the man-to-man rope connection via debug console and it worked reliably, current implementation likely works too but I couldn't fully test it yet. |
Finally got the GSA rope to work, I just have a doubt regarding GSA disconnection. |
I copied over the ACE Refueling hose model and config to make the connector rope black and look more like an actual wire, I presume that's ok since ACRE2 and ACE developments are somewhat related. There is an ongoing issue with a created rope reducing the effective range at which the disconnect interaction can be seen to <1m, happens whenever the rope start location is within ~50cm of the interaction's position. |
I wonder if the cable could be made breakable by gunfire & explosions, and/or by using the mouse wheel menu & ACE interact to cut it ? ^ Would increase realism, and depending on how you think about it, give engineers more reason to exist, or make life harder for engineers & mission devs & Zeuses. |
Would be a neat feature for sure, though I guess it should come as part of a larger "radio damage" framework, possibly including what ACRE2 Radio Damage implements. |
That'd be nice for a field telephone system but I think it's overkill while there's only infantry phones. |
Found an issue in MP where the helper object on a player was not deleted after using the infantry phone, presumably related to 2 people using the infantry phone simultaneously. |
I figured out the cause, it's a bug that is also present in v2.12.0.1056. The core issue is that more than 1 player can access the same infantry phone. Repro steps:
Haven't yet been able to verify how audio piping is affected by these steps. |
Fixed the bug by checking the vehicle's (global) @Drofseh if you want to add the rope end selector feel free, I just think that would best be left to the modder of ACRE Animations to support, since that mod already has some decent handset models and animations in use right now. |
Done in 7f00b0b. |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More var use.
This seems like the best solution, due to the complexity of the GSA connection handling and the different ways connection can be influenced by remote players.
Most locality issues in GSA ropes are now completely resolved, I should have used CBA Events from the start given the complexity of that framework and how much of it is synced with remotes. We found another issue, which is most likely in the base game. |
Doing so would create a desync / double connection if someone else was connected to the GSA, that's because the code wouldn't run the disconnect/reconnect events on the previously connected player but only on the one triggering the interaction.
This is to prevent issues in the case of the radio owner being connected to a GSA while sharing his radio.
This is pretty awesome. Have the latest issues from March been resolved as well? |
Yes, it's been working pretty well so far during normal matches with our fork. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested, working
Co-authored-by: Mike-MF <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was skeptic putting this into sys_core
, but seeing other components use it makes sense. I rather like the implementation too.
Just some minor cleanup and we can merge. 👍
I can't yet vouch for 100% functionality of the use cases mentioned above. Next week I should have the time for some in-depth tests. |
Managed to get someone to test it with me today, found critical issues with infantry phone passing and the wire not connecting properly with a shared radio's operator. |
Some locality weirdness appears to be the cause of the shared radio wire issues. |
Co-authored-by: jonpas <[email protected]>
Given the apparent engine's limitations I'd be inclined to drop the external radio rope feature. They are only barely noticeable anyway, due to the close proximity required between owner and user. That aside, the only issue to resolve is proper passing of the infantry phone and then this PR should be complete. |
Unfeasible due to engine limitations, which prevent global attachment of a rope if its start is on an object that is attachTo-ed a player unit.
Done. |
When merged this pull request will:
intercomPFH
s to never disconnect them due to distance, entering the vehicle or being captured;To-Do:
ropeCreate
is executed globally);