Anyone want to explain Regions?

cleeezzz

The Undead Ranger.
Reaction score
268
ok. so What exactly are regions FOR? how are they useful? note that i said Regions, not Rects

ive created this trigger which "maps out" the terrain, it saves all terrain that is cliff level 0. (so any cliffs inside playable map area will be removed from the region)

JASS:
scope MAPOUT initializer Init

globals
    constant integer cl = 0
    boolean Check = false
    region Lower_Level = null
    real x
    real y
    real mx
    real my
    real sx
    real ex
    trigger MAPOUTTRIG
endglobals

private function Actions takes nothing returns nothing
    local rect r
    set x = GetRectMinX(bj_mapInitialPlayableArea)
    loop
        exitwhen x > mx
        if GetTerrainCliffLevel(x,y) != cl then
            if Check == false then
                set sx = x
                set Check = true
            endif
        elseif Check == true then
            set ex = x
            set r = Rect(sx,y-56,ex,y+56)
            call RegionClearRect(Lower_Level,r)
            call RemoveRect(r)
            set r = null
            set Check = false
        endif
        set x = x + 56
        if x > mx and Check == true then
            set ex = x
            set r = Rect(sx,y-56,ex,y+56)
            call RegionClearRect(Lower_Level,r)
            call RemoveRect(r)
            set r = null
            set Check = false
        endif
    endloop
    set y = y + 56
    if y > my then 
        call DisableTrigger(MAPOUTTRIG)
    endif
endfunction

//===========================================================================
private function Init takes nothing returns nothing
    local trigger trig = CreateTrigger(  )
    set MAPOUTTRIG = trig
    set x = GetRectMinX(bj_mapInitialPlayableArea)
    set y = GetRectMinY(bj_mapInitialPlayableArea)
    set mx = GetRectMaxX(bj_mapInitialPlayableArea)
    set my = GetRectMaxY(bj_mapInitialPlayableArea)
    set Lower_Level = CreateRegion()
    call RegionAddRect(Lower_Level,bj_mapInitialPlayableArea)
    call TriggerRegisterTimerEvent(trig,0.01,true)
    call TriggerAddAction( trig, function Actions )
endfunction

endscope


Now that i have this region with holes in it that only contains cliff level 0, WTH can i do with it? the only native i see useful is, IsPointInRegion, and thats not exactly what i want. I want something more like "GetRandomLocInRect" except for regions.
 

jwallstone

New Member
Reaction score
33
Regions are just collections of rects. It's essentially a way to combine rects to form arbitrary shapes. You can use regions for the Enter region and Leaves region events.
 

cleeezzz

The Undead Ranger.
Reaction score
268
so i cant even get a random point inside the region without having to loop it?
 

D.V.D

Make a wish
Reaction score
73
With the reigon, you could make weather effects, certian spells be casted only in that reigon, stuff like that. You could also do something like a unit enters reigon, and set the fog for the local player to something different to show a new enviorment.
 

D.V.D

Make a wish
Reaction score
73
I don't think thats really possible but I don't have much work with reigons. Why won't you just use a loop? I don't see whats so bad.
 

cleeezzz

The Undead Ranger.
Reaction score
268
cuz if its only a 500x500 square on a map thats about 10000x10000 square units, randoming a point and checking the region would be EXTREMELY inefficient because it might have to loop maybe 500 times.
 

Rainther

I guess I should write something of value here...
Reaction score
61
Bind a location array in the center of each rect in the region and have a trigger to randomly go offset from one of the locations.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top