mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
SET: Added GetRandomSurely()
This commit is contained in:
parent
4c81333a0a
commit
db6dc7b77e
@ -455,7 +455,7 @@ do -- SET_BASE
|
|||||||
|
|
||||||
--- Gets a random object from the @{Core.Set#SET_BASE} and derived classes.
|
--- Gets a random object from the @{Core.Set#SET_BASE} and derived classes.
|
||||||
-- @param #SET_BASE self
|
-- @param #SET_BASE self
|
||||||
-- @return Core.Base#BASE
|
-- @return Core.Base#BASE or nil if none found or the SET is empty!
|
||||||
function SET_BASE:GetRandom()
|
function SET_BASE:GetRandom()
|
||||||
local tablemax = 0
|
local tablemax = 0
|
||||||
for _,_ind in pairs(self.Index) do
|
for _,_ind in pairs(self.Index) do
|
||||||
@ -466,6 +466,23 @@ do -- SET_BASE
|
|||||||
self:T3( { RandomItem } )
|
self:T3( { RandomItem } )
|
||||||
return RandomItem
|
return RandomItem
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Gets a random object from the @{Core.Set#SET_BASE} and derived classes. A bit slower than @{#SET_BASE.GetRandom}() but tries to ensure you get an object back if the SET is not empty.
|
||||||
|
-- @param #SET_BASE self
|
||||||
|
-- @return Core.Base#BASE or nil if the SET is empty!
|
||||||
|
function SET_BASE:GetRandomSurely()
|
||||||
|
local tablemax = 0
|
||||||
|
local sorted = {}
|
||||||
|
for _,_obj in pairs(self.Set) do
|
||||||
|
tablemax = tablemax + 1
|
||||||
|
sorted[tablemax] = _obj
|
||||||
|
end
|
||||||
|
--local tablemax = table.maxn(self.Index)
|
||||||
|
--local RandomItem = self.Set[self.Index[math.random(1,tablemax)]]
|
||||||
|
local RandomItem = sorted[math.random(1,tablemax)]
|
||||||
|
self:T3( { RandomItem } )
|
||||||
|
return RandomItem
|
||||||
|
end
|
||||||
|
|
||||||
--- Retrieves the amount of objects in the @{Core.Set#SET_BASE} and derived classes.
|
--- Retrieves the amount of objects in the @{Core.Set#SET_BASE} and derived classes.
|
||||||
-- @param #SET_BASE self
|
-- @param #SET_BASE self
|
||||||
@ -8215,9 +8232,15 @@ do -- SET_SCENERY
|
|||||||
-- @param #SET_SCENERY self
|
-- @param #SET_SCENERY self
|
||||||
-- @return Core.Point#COORDINATE The center coordinate of all the objects in the set.
|
-- @return Core.Point#COORDINATE The center coordinate of all the objects in the set.
|
||||||
function SET_SCENERY:GetCoordinate()
|
function SET_SCENERY:GetCoordinate()
|
||||||
|
|
||||||
local Coordinate = self:GetRandom():GetCoordinate()
|
local Coordinate = COORDINATE:New({0,0,0})
|
||||||
|
|
||||||
|
local Item = self:GetRandomSurely()
|
||||||
|
|
||||||
|
if Item then
|
||||||
|
Coordinate:GetCoordinate()
|
||||||
|
end
|
||||||
|
|
||||||
local x1 = Coordinate.x
|
local x1 = Coordinate.x
|
||||||
local x2 = Coordinate.x
|
local x2 = Coordinate.x
|
||||||
local y1 = Coordinate.y
|
local y1 = Coordinate.y
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user