Snippet Loc

Dirac

22710180
Reaction score
147
JASS:
library Loc /* v1.1.0

*/uses/* 
*/  LinkedListModule /* thehelper.net/forums/showthread.php/168775-LinkedListModule

Replacement of the Location native.

***********************************************************************
*
*   struct Loc
*
*       readonly real x
*       readonly real y
*       readonly real z
*           -   These 3 read-only variables are the Loc's coordinates
*
*       static method create takes real x, real y, real z returns Loc
*           -   Creates a new Loc with the given coordinates.
*       method destroy takes nothing returns nothing
*           -   Deallocates the Loc.
*
*       method move takes real x, real y, real z returns nothing
*           -   Assigns the Loc new coordinates.
*
*       static method join takes Loc A, Loc B returns nothing
*           -   Joins two Locs together. You can join multiple Locs
*       method disjoint takes nothing returns nothing
*           -   Breaks the joint of the given Loc.
*
*       These 4 read-only members store the relation between
*       two Locs. Can be set manually using the "get" methods
*       or automatically using the join method.
*           readonly real angle
*               -   The angle between the Locs in the XY plane.
*           readonly real distance
*               -   The distance between the Locs in the XY plane.
*           readonly real slope
*               -   The relation between the height difference of the
*               -   two Locs and the distance between them
*           readonly real zangle
*               -   The angle of the Locs in the Z plane.
*           readonly real modulo
*               -   The distance between the Locs in the XYZ plane.
*
*       method angleGet takes Loc fromWhatLoc returns nothing
*       method distanceGet takes Loc fromWhatLoc returns nothing
*       method slopeGet takes Loc fromWhatLoc returns nothing
*           -   Sets the respective member to the required value.
*
**********************************************************************/
    
    struct Loc extends array
        
        implement LinkedList
        
        readonly static location point = Location(0,0)
        
        readonly real x 
        readonly real y
        readonly real z
        
        readonly real angle
        readonly real distance
        readonly real slope
        
        method operator zangle takes nothing returns real
            return Atan(slope)
        endmethod
        
        method operator modulo takes nothing returns real
            return distance/Cos(zangle)
        endmethod
        
        method angleGet takes Loc v returns real
            set angle = Atan2(y-v.y,x-v.x)
            return angle
        endmethod
        
        method distanceGet takes Loc v returns real
            set distance = SquareRoot((v.x-x)*(v.x-x)+(v.y-y)*(v.y-y))
            return distance
        endmethod
        
        method slopeGet takes Loc v returns real
            set slope = (v.z-z)/distance
            return slope
        endmethod
        
        method calculate takes Loc v returns nothing
            call this.angleGet(v)
            call this.distanceGet(v)
            call this.slopeGet(v)
        endmethod
        
        private method refresh takes nothing returns nothing
            local thistype exit = this
            loop
                set this = next
                exitwhen this == exit
                call exit.calculate(this)
                set angle = exit.angle+bj_PI
                set distance = exit.distance
                set slope = -exit.slope
            endloop
        endmethod
        
        static method join takes Loc A, Loc B returns nothing
            set A.next.prev = B.prev
            set B.prev.next = A.next
            set A.next = B
            set B.prev = A
            call A.refresh()
        endmethod
        
        method disjoint takes nothing returns nothing
            call this.removeNode()
        endmethod
        
        method move takes real sx, real sy, real sz returns nothing
            call MoveLocation(point,sx,sy)
            set x = sx
            set y = sy
            set z = sz+GetLocationZ(point)
            call this.refresh()
        endmethod
        
        static method create takes real sx, real sy, real sz returns thistype
            local thistype this = createNode()
            call this.move(sx,sy,sz)
            return this
        endmethod
        
        method destroy takes nothing returns nothing
            call this.removeNode()
            call this.deallocate()
        endmethod
        
    endstruct
    
endlibrary
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • jonas jonas:
    where did you go?
  • The Helper The Helper:
    Jefferson TX on a Paranormal Investigation of a haunted bed and breakfast - I got some friends that are paranormal investigators and they have an RV and do YouTubes
    +1
  • The Helper The Helper:
    It was a lot of fun. The RV was bad ass
  • jonas jonas:
    That sounds like fun!
    +1
  • The Helper The Helper:
    it was a blast!
  • The Helper The Helper:
    I am going to post the Youtube of the investigation in the forums when it is ready
    +1
  • jonas jonas:
    cool!
  • vypur85 vypur85:
    Sounds cool TH.
  • tom_mai78101 tom_mai78101:
    I was on a Legend of Zelda marathon...
  • tom_mai78101 tom_mai78101:
    Am still doing it now
    +1
  • jonas jonas:
    which one(s) are you playing?
  • jonas jonas:
    I played a little bit of the switch title two weeks ago and found it quite boring
  • The Helper The Helper:
    just got back from San Antonio this weekend had the best Buffalo Chicken Cheesesteak sandwhich in Universal City, TX - place was called Yous Guys freaking awesome! Hope everyone had a fantastic weekend!
    +1
  • The Helper The Helper:
    Happy Tuesday!
  • The Helper The Helper:
    We have been getting crazy numbers reported by the forum of people online the bots are going crazy on us I think it is AI training bots going at it at least that is what it looks like to me.
  • The Helper The Helper:
    Most legit traffic is tracked on multiple Analytics and we have Cloud Flare setup to block a ton of stuff but still there is large amount of bots that seem to escape detection and show up in the user list of the forum. I have been watching this bullshit for a year and still cannot figure it out it is drving me crazy lol.
    +1
  • Ghan Ghan:
    Beep boop
    +1
  • The Helper The Helper:
    hears robot sounds while 250 bots are on the forum lol
  • The Helper The Helper:
    Happy Saturday!
    +1
  • The Helper The Helper:
    and then it was Thursday...
    +2
  • tom_mai78101 tom_mai78101:
    And then Monday
    +1
  • The Helper The Helper:
    I got the day off today!
    +1
  • tom_mai78101 tom_mai78101:
    How...? (T-T)
  • The Helper The Helper:
    I took the day off. I work for myself so I can do that.
    +1
  • Varine Varine:
    Well I'm already over summer

    The Helper Discord

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top