This value I used the max input for a 'random integer in range' node which randomly picks a integer between a min and max values. I used this random return value to drive a 'get' node (which gets a single value of an array) from my 'child class' array variable to the class input of the 'Spawn Actor' node (Fig2). This means the logic is random selecting an asset from the index of the array then spawn that into the world.
The problem is that although you could get the world transform of the box collision but it wouldn't properly spawn inside the box to how I need it for the game as it will give the overall location not a pin point value to spawn and it wouldn't be random. In figure 6 shows how I got around this. I used a 'get component bonds' node which literally gets the origin (center of the box) & box extent values of the box. The math logic in figure 6 looks complex but the methodology once broken down is quite simple. The ideal is basically to break the vectors of the component bounds into float values; then working out the min & max values of both the X & Y axis between the origin and the box extent. Then feeding these min & max Axis' values into 'random float in range' nodes that is used to make a location vector from the X,Y and Z axis values. To simply put I used the 'random float in range' to randomly generate a random pin point location between origin & box extent of the collision box. To finish up I used a 'make transform' node; taking values from random generated rotations and scale values (fig 6) along with the location vector to make a Transform value which is used for the transform input of the 'Spawn Actor' node (Fig2.).
The logic for the child blueprint is broken into different sections. The first part is the referencing of variables stored in the parent even though the child blueprint inherent these variables It is makes it easier access to that data and more time efficient just getting the data from variables panel compared to searching for the data in the drop down menu.
Another integer variable i used was 'spawned amount'; this is in the index of how many meshes was spawned. The concept is that, I use a 'For Loop' node that fires a custom event in the loop; then later in the logic adds one on to the spawned amount. Doing this turns the script into a checking loop logic where I test between the amount spawned and the spawned max. This means if the amount spawned is less the the spawn max the fire another loop until the spawned amount index equals the spawned max.
The next step was to set up the functionality around the door. To do this I created an interface event so in another blueprint when conditions met in another blueprint it would fire this interface event with potentially data across to the door asset if needed. I built the functionality so that when the event is fired it would do a sequence of tasks which is to get the animation instance of my door asset, then cast to the door animation blueprint then set the transitional condition to true in which plays the animation. From this I then wait 20th of a second with a delay and then destroy the collusion component; the reason I have a delay node just in case destroying the component would effect the animation so it acts like a some break between the two actions.