Announcement

Collapse
No announcement yet.

EntitiesTouching () [ Modified ]

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • EntitiesTouching () [ Modified ]

    This is already a function the doors use , but I redid it as another cheap way to check for a touch without needing to assign .touch field - plus I believe this code wont care if either ent is non solid. You can modify it with just a copy and paste, and there is only one call in doors.qc , which you can change to:

    if (EntitiesTouching (0,self, t))

    ....if you want to not show a compiler warning.


    Code:
    [FONT="Franklin Gothic Medium"]
    float (float mode, entity e1, entity e2) EntitiesTouching =
    {
    [FONT="Century Gothic"][COLOR="LightBlue"]//Cobalt mode float - modifies to cover absmin/absmax, else do normal mins/maxs[/COLOR][/FONT]
    
    local vector low1, high1, low2, high2;
    
        low1 = e1.mins;
        high1 = e1.maxs;
        low2 = e2.mins;
        high2 = e2.maxs;
    
           if (mode)
           {
            low1 = e1.absmin;
            high1 = e1.absmax;
            low2 = e2.absmin;
            high2 = e2.absmax;
           }
     
     
    	if (low1_x > high2_x)
    		return FALSE;
    
    	if (low1_y > high2_y)
    		return FALSE;
    
    	if (low1_z > high2_z)
    		return FALSE;
    
    	if (high1_x < e2.mins_x)
    		return FALSE;
    
    	if (high1_y < e2.mins_y)
    		return FALSE;
    
    	if (high1_z < e2.mins_z)
    		return FALSE;
    
    	return TRUE;
    };
    
    
    
    [/FONT]


    basicly mode 0 is the default function, any mode > 0 will be checking absolute coordinates relative to the map, whereas mode 0 is only relative to the ent.

  • #2
    me likey. GJ!

    Comment

    Working...
    X