There should be a function called “RemoveInstance” which takes a int32 index value, so you’ll have to keep / find what index you want to remove. Here is the kicker though, Instance Static Mesh Components remove by performing a swap of the last index with the index you are removing, it does this to reduce the cost of resizing the array, so if you are trying to keep a record of these indexes in a secondary array you’ll have to perform the same sort of swap and remove on it, Luckly this is a built in function of TArrays.
Honestly if you are building a Multiplayer game do not try to bolt on replication and RPCs later, especially when trying to deal with a fairly complicated system like ISM’s and HISMs. For your own sanity think multiplayer first if you are building multiplayer, don’t skimp on this or you have a very high chance of regretting it later.
Also I noticed you are using “VectorLength” up there. This is fine for proof of concept but know that the square root function is one of the most expensive operations in computing. If this is happening on tick I highly suggest switching to “VectorLengthSquared” which gives you the vector length with out square rooting it. For your “Min Safe Spawn Distance” comparison you just square the distance value you want to hit so if you want minimum 10 centimeters you use 100, 50cm you use 2500.