TheNexusAvenger / Nexus-VR-Character-Model

Maps Roblox characters to the VR inputs of players.
MIT License
66 stars 12 forks source link

Make FindCollidablePartOnRay an openable thing, so other scripts can modify it nicer #36

Closed karl-police closed 8 months ago

karl-police commented 8 months ago

I wanted to change FindCollidablePartOnRay to filter out rays. Since it is like it's standalone Utility function. I changed it so that another script can require it and then override the behavior to their own liking.

Like that one can do that but still keep an updated version of the Module, without having to re-upload it entirely.

Now one can just require it and replace .FindCollidablePartOnRay = to override the function.

TheNexusAvenger commented 8 months ago

I get what you are trying to do, and I have done something like this for other projects, but I really do not want to go with this approach. Most games load in the latest version of Nexus VR Character Model. Stating that it is ok to replace the FindCollidablePartOnRay module either requires me to lock in this implementation + location, or to accept breaking the games later that were told they can rely on this. This means you should never rely on an undocumented API or module in Nexus VR Character Model. I'd like a different solution for this to work, either with the APIs or something not coupled to Nexus VR Character Model at all, since the API docs start by saying to avoid them if you can.

karl-police commented 8 months ago

I get what you are trying to do, and I have done something like this for other projects, but I really do not want to go with this approach. Most games load in the latest version of Nexus VR Character Model. Stating that it is ok to replace the FindCollidablePartOnRay module either requires me to lock in this implementation + location, or to accept breaking the games later that were told they can rely on this. This means you should never rely on an undocumented API or module in Nexus VR Character Model. I'd like a different solution for this to work, either with the APIs or something not coupled to Nexus VR Character Model at all, since the API docs start by saying to avoid them if you can.

Can we discuss solutions for it?

TheNexusAvenger commented 8 months ago

Post what you want to present and I'll give my response. The 2 concepts mentioned at the end of my previous response are what I would accept.

karl-police commented 8 months ago

Post what you want to present and I'll give my response. The 2 concepts mentioned at the end of my previous response are what I would accept.

Yeah I understand the thing you are talking about, about how it could break games that were ment to rely on it.

AS IN, for the future, cuz currently it's like an anonymous function.

It's good that we have these discussions so we can discuss a better solution.

I only wanted it, to add stuff to a ray ignore thing.

Do you think adding a setting for it, in the configuration is better? But the thing is like, people may wanna add stuff to the rayignore, that eventually doesn't exist yet.

Maybe a callback function, but that just sounds hacky..

TheNexusAvenger commented 8 months ago

A configuration setting would not work because the configuration is serialized to JSON on the server and deserialized on the client.

karl-police commented 8 months ago

A configuration setting would not work because the configuration is serialized to JSON on the server and deserialized on the client.

soo, do I like implement an API that scripts just can access, specifically for Ray Ignores? 🤔

karl-police commented 8 months ago

@TheNexusAvenger

The problem is. The finding rays part is encapsulated.

We need to like let something in.