[ENHANCEMENT] Allow parts to modify vehicle motorized variables
boot2big opened this issue ยท 13 comments
Would be very useful for things like spoilers/wings/whatever that actually add downforce, as well as differential parts that change the axle ratio on a car (or AWD/FWD/RWD conversion), etc.
A question that might come up that I've thought of is load order...
Suppose a vehicle has 4 unique engines, two of which modify the axle ratio, and of the four engines, two are subparts of something. (A seat, plate, etc. But not part of the actual vehicle.)
Engine 1 is a normal engine on the vehicle, engine 2 is an engine on the vehicle that sets axle ratio to 3.55, engine 3 is a subpart of a part but doesn't modify anything, engine 4 is also a subpart that appears after 3 and sets the axle ratio to 9999.
Since engine 2 appears before 4, and 4 appears last on the engine panel (U), the axle ratio should be 9999 until engine 4 explodes/is removed/whatever.
Would basing this off of generic activeAnimations also be possible, similarly to ground effectors? (drill, plow, etc)
As in, if the animation is disabled, the variables don't apply?
Basing this on the AAs is for sure the correct way to go. Say for retractable spoilers and such. However, I would strongly prefer to have only a few things modifiable, as making all the parameters in motorized able to be edited is not ideal. The ones I can see for sure are downForce (spoilers), axleRatio (for those of you who keep pestering me for transmission parts), front/rear wheel drive (for those who keep asking for switchable drivertrains, think part with a door clicking on it), and possibly wing area, for foldable wings. If I could get a comprehensive list this would be idea.
Cowboy, I know you're not about to come to the main Discord to talk about this (though I do miss you there), but do note that I'll have to query the other folks about this, especially Blaze/Poker/Emerald who have requested stuff like this in the past, and so it'll take a while to get a consensus for this one. As such, I'm going to flag it as a backburner. Though in all actuality it's not very hard for me to do in the code. It's just hard to know what everyone will want.
You're on the mark for spoilers, and definitely did make another addition to that point with the dynamic areo spoiler. There's also the clippable wing as mentioned by fsend, and some other things I had in mind...
I do also agree that some motorized variables should be modifiable, and some not so much. In fact, I had the wheeldrive in mind for 4WD switchable boxes, be it manually or automatically, as well as drag coefficient for windshields, or as mentioned, the spoilers. (Or any parts that would significantly modify your air resistance, tbh. Like bumpers, air body panels, windshields and whatnot.)
As for modifying axle ratio, I only used that as an example at first. However, it would probably make more sense to use it for high/low selectors (to me at least) rather than swappable transmissions.
Another usecase I can think of is something that's already missing from some vehicles! The isOpenTop (or whatever it's called) variable that either muffles noises, or doesn't... I know of at least two vehicles that could stand to use such a feature for their attachable top parts!
(If anyone's curious, the OCP IH Scout and Trin Rodeo V3... cabrio.)
Now that you've given me the idea. I'll make a foldable wing part for certain vehicles. a-la BeamNG Rocket Bolide. Because it'd be really funny.
Has Autopilot/Radio Nav would also make sense for removable plane computers on planes that don't necessarily need to be computing to get commuting.
Braking factor. Y'know, because your ex-wife was too lazy to fight for the diamond sword in the divorce. :sans: (Or upgradable brakes, I suppose...)
As for some variables I can think of that probably don't need to be part modifiable, here's some off the top of my head...
hud/panel texture/light texture... dunno if that would go well.
isTrailer, may invite brakelight jank? You decide on this one, as well as isPlane/isBlimp
emptyMass, you already have part mass!!
hookupVariables, I think parts have these too if I'm not mistaken. glances at winch
I've thought about it some, still thinking about it. I miss it as well, but I'm not sure coming back would be the best idea when several key community members have some bones to pick with me.
I'm available to contact on PlanetMinecraft though, even if not immediately. Or here.
I know folks would be very happy about dynamic wings. However, I'm thinking they might want that to be definable in the model rather than the part itself. Cause then you would need to split the folding wing model from the main vehicle so it'd be its own part. Not ideal when you're trying to keep textures mapped properly. There might be a way for me to do such things via animation, but I'd need to ponder it, even if the disabling of the part it the easier way.
Then again, it would let you have your wing blown up if we ever get part damage,.
For the 4WD, my same thoughts apply, though that's easier to handle via a transfer case part, but again, you're going to be clicking a lever on the model. Now that lever might be invisible without the transfer case (like clutches are in vehicles that can take auto or manual transmissions), but the end result is you're clicking a vehicle component to adjust a vehicle property... using a part. Just seems like extra overhead. Granted, you might want to make upgrades, but then you could just as well have the part disable the animation.
For sure the open top needs work. Not just scout roofs, but convertibles too. What's the point of putting the top up if it's just gonna be as noisy as before? I'd also like to work windows into this if we're talking variables, but that might be pushing it. In all honesty, I'm starting to think a section where you can say "If this variable is on, then take this property, and add this value to it." So things like folded wings would add to wingArea if they are un-folded, top presence or if it's up would add to noise dampening, etc.
The autopilot and radio nav... that's part of the panel. And I don't wanna muck with that right now. Eventually I want to allow for JSON panels, but that'll be some time down the line. Folks are already converting lights, and I don't wanna give em another thing to chew on right now. Though I may go into collision boxes here shortly as those won't change and will just get LCed.
The "is" variables for sure can't change, as those go into the physics and controls systems. Changing those will cause un-defined physics effects and will change the control layout of the vehicle. Not a good idea with typical MC users. And trailers? Changing those is gonna get you Null Pointer Exceptions for sure. Or just NaNed. Either way, it's a corrupt save file. Trailers are VERY ornery if you get them out of sync.
As to the bone-picking, I think that goes a bit both ways. Considering the fact that you reported a pack, and then they reported you. Then both of y'all were taking pot-shots at one another before it all blew up, to the point I kicked out both of y'all for that time. Given that the big beef came from skins, I'd wager that if you removed all skins from other packs from yours, and then just kept the bone-pickers blocked and didn't say anything about them, they would not have any reason to pick them bones. Cactus is excepted, as he's salty, but I honestly think that DPL would extend a hand if he didn't think that anything of his was gonna get touched. He's protective, and when you poke a protective person's stuff... well, you see the result.
But, I'm not about to drag you back if you don't feel it to be right. Far from it. But if you were to come back and be invisible and just chat via PMs, well that's cool too. I leave it up to you.
Happy to know that there's still someone looking out for all these pesky bugs and pushing boundaries though. Keeps me on my toes, and keeps the creative juices flowing!
4WD transfer case can be done with custom variable animations in the same way my hi-beams do. Although, now that it's mentioned, maybe adding to the variables makes more sense in some cases, like wingspan. Maybe have it choosable though? (Axle modifying parts could set axle ratio to 2.5 universally, wingspan or drag coefficient gets added to)
This is something that a lot of people have suggested, I support it as well. Would allow for stuff like clipped or extended wings, or flap mods.
Alternatively if for some reason loading the first part that modifies vehicle parameters would work better, that's also fine. Besides, I feel like it may be unlikely for one to put multiple axle-modifying parts, or wing types, whatever, on their vehicle
i haven't read the conversation, so this may have already been mentioned, but i'd still like to chime in just in case
cowboy sent me a DM and my brain basically broke with all the conversation here
Besides active animations for this stuff, will this work with other animations like say for example, translations and rotations?
This would greatly benefit things like vehicle physics or performance, since you can have granular control over things, beyond "vtec enabled over this amount of RPM"
You could make things like realistic torque curves, or if you wanna go all out (like i do) you could potentially make a functional clutch all via mts systems, (though i have to think on it longer and figure out all the little bugs and stuff) or you could even alter vehicle physics dynamically, such as a flat acceleration curve for electric cars, or electronic speed limiters, or rev limiters that work in drive gear via setting gradually lowering power output, and dynamic friction based on more than just slip (like RPM and speed and all that fun physics math stuff), though i think me and cowboy would be the only ones activity pioneering this tech, with folks like nax, seagull, fsend, and the folks at GAP following shortly after
if there's any variables that would switch from true to false convert the 0s and 1s to true/false (if possible)
anyways, yeah this is my input
Hearing this eventually coming gives me a lot of hype and excitement, like the v19 animation system when it first got looping animations then it's full on overhaul, still ongoing in v20. For example, It opened the gateway to more sound and effects, though the real deal came when we were given full control of the sound system to ourselves, free to do whatever we wish only limited to what the animation system did, but even then the system itself is not lacking at all
Actually... would changing an own part's variables be possible too? (Be it an animation on the part itself (tire grip for certain situations?) or a subpart of that part? (Working nitrous/turbochargers that aren't perma-installed?))
Maybe? All depends on what variables you want to modify. You can't modify a JSON variable due to it being defined in a text file, but you can add/subtract from that value wherever it's used.
Wouldn't be that bad for the usecases I'm thinking of, as that'd be adding to FC/SCFC or to power/turning friction
FC already has a method, so easy enough to handle that. Friction does not, but should if I'm going to add those ground modifiers (rain, sand, dirt, etc). I can work with this.