Just a thought. Would it be possible to create a stool that effectively merges all selected props into one larger prop with the same attributes as the individual props (eg. same collision mesh, same total wieght etc.)?
For example, when building huge objects that are required to fly around the map it is often the case that lag ensues when moving so many props at the same time. Even when no-collided and smart-welded together lag will still occur. If the props that make up the ship were merged into one combined prop this would cease to be an issue.
I wasn’t able to get collision with the world to work, because child props cannot exert a force back on the parent, and there is a slight bug with friction, but other than that it’s good: Full collision with other props and everything.
Yes, I can see where this is going with parenting but its not really what I’m getting at. The purpose of the stool is to combine two props into one prop which is identical to the separate props. The stool must reduce the number of props and, of course, keep the same physics for the amalgamated prop. Parenting wouldn’t do this, the child could be moved relative to the parent which would mean two props were involved. The ultimate objective of all this is to reduce welds and props in a structure where all the components are static relative to each other (not necessarily static relative to the world).
Skyhawk may have accomplished this but still, the concept we want to get to here is in the name: one prop.
Unfortunately, the source engine isn’t built for that, nor is any game engine really. The models and collision meshes would have to be recompiled externally during the game runtime, or possibly in a threaded process, which is far from possible in Lua and would be difficult and slow in C++. Then the model would have to be reloaded and this and that, it’s just not feasible in the Source Engine really.
On the other hand, parenting is very close - while the props are not combined, the second one is literally locked to its parent prop - the child prop CANNOT be moved separately, it takes all its calculations from its parent (well, except for a bug in SinglePlayer, but it’s fine in MP) It’s the closest you’re going to get, sadly.