This code can't be compiled. Why?

bowser499

Member
Reaction score
1
Code:
//library Math:
//~~REQUIRES: udg_VectorHash | udg_Matrix3Hash | udg_Matrix4Hash - Hashtable ~~
//~~          udg_VECTOR3_Zero | udg_VECTOR3_oneX | udg_VECTOR3_oneY | udg_VECTOR3_oneZ - Integer ~~
//~~          udg_MATRIX3_Zero | udg_MATRIX3_E | udg_MATRIX4_Zero | udg_MATRIX4_E - Integer ~~

function R2I_n takes real r returns integer
    local integer i = R2I(r)
    if r < I2R(i)+.5 then
        return i
    else
        return i+1
    endif
endfunction

//=====================================================================

function SetVectorX takes integer vec, real x returns nothing
    call SaveReal(udg_VectorHash,vec,0,x)      
endfunction

function SetVectorY takes integer vec, real y returns nothing
    call SaveReal(udg_VectorHash,vec,1,y)      
endfunction

function SetVectorZ takes integer vec, real z returns nothing
    call SaveReal(udg_VectorHash,vec,2,z)      
endfunction

function GetVectorX takes integer vec returns real
    return LoadReal(udg_VectorHash,vec,0)      
endfunction

function GetVectorY takes integer vec returns real
    return LoadReal(udg_VectorHash,vec,1)      
endfunction

function GetVectorZ takes integer vec returns real
    return LoadReal(udg_VectorHash,vec,2)      
endfunction

//=====================================================================

function GetMatrix3m11 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,0)     
endfunction

function GetMatrix3m12 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,1)     
endfunction

function GetMatrix3m13 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,2)     
endfunction

function GetMatrix3m21 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,3)     
endfunction

function GetMatrix3m22 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,4)     
endfunction

function GetMatrix3m23 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,5)     
endfunction

function GetMatrix3m31 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,6)     
endfunction

function GetMatrix3m32 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,7)     
endfunction

function GetMatrix3m33 takes integer m returns real
    return LoadReal(udg_Matrix3Hash,m,8)     
endfunction

function SetMatrix3m11 takes integer m, real m11 returns nothing
    call SaveReal(udg_Matrix3Hash,m,0,m11)     
endfunction

function SetMatrix3m12 takes integer m, real m12 returns nothing
    call SaveReal(udg_Matrix3Hash,m,1,m12)     
endfunction

function SetMatrix3m13 takes integer m, real m13 returns nothing
    call SaveReal(udg_Matrix3Hash,m,2,m13)     
endfunction

function SetMatrix3m21 takes integer m, real m21 returns nothing
    call SaveReal(udg_Matrix3Hash,m,3,m21)     
endfunction

function SetMatrix3m22 takes integer m, real m22 returns nothing
    call SaveReal(udg_Matrix3Hash,m,4,m22)     
endfunction

function SetMatrix3m23 takes integer m, real m23 returns nothing
    call SaveReal(udg_Matrix3Hash,m,5,m23)     
endfunction

function SetMatrix3m31 takes integer m, real m31 returns nothing
    call SaveReal(udg_Matrix3Hash,m,6,m31)     
endfunction

function SetMatrix3m32 takes integer m, real m32 returns nothing
    call SaveReal(udg_Matrix3Hash,m,7,m32)     
endfunction

function SetMatrix3m33 takes integer m, real m33 returns nothing
    call SaveReal(udg_Matrix3Hash,m,8,m33)     
endfunction

//=====================================================================

function GetMatrix4m11 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,0)     
endfunction

function GetMatrix4m12 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,1)     
endfunction

function GetMatrix4m13 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,2)     
endfunction

function GetMatrix4m14 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,3)     
endfunction

function GetMatrix4m21 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,4)     
endfunction

function GetMatrix4m22 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,5)     
endfunction

function GetMatrix4m23 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,6)     
endfunction

function GetMatrix4m24 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,7)     
endfunction

function GetMatrix4m31 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,8)     
endfunction

function GetMatrix4m32 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,9)     
endfunction

function GetMatrix4m33 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,10)     
endfunction

function GetMatrix4m34 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,11)     
endfunction

function GetMatrix4m41 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,12)     
endfunction

function GetMatrix4m42 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,13)     
endfunction

function GetMatrix4m43 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,14)     
endfunction

function GetMatrix4m44 takes integer m returns real
    return LoadReal(udg_Matrix4Hash,m,15)     
endfunction

function SetMatrix4m11 takes integer m, real m11 returns nothing
    call SaveReal(udg_Matrix4Hash,m,0,m11)     
endfunction

function SetMatrix4m12 takes integer m, real m12 returns nothing
    call SaveReal(udg_Matrix4Hash,m,1,m12)     
endfunction

function SetMatrix4m13 takes integer m, real m13 returns nothing
    call SaveReal(udg_Matrix4Hash,m,2,m13)     
endfunction

function SetMatrix4m14 takes integer m, real m14 returns nothing
    call SaveReal(udg_Matrix4Hash,m,3,m14)     
endfunction

function SetMatrix4m21 takes integer m, real m21 returns nothing
    call SaveReal(udg_Matrix4Hash,m,4,m21)     
endfunction

function SetMatrix4m22 takes integer m, real m22 returns nothing
    call SaveReal(udg_Matrix4Hash,m,5,m22)     
endfunction

function SetMatrix4m23 takes integer m, real m23 returns nothing
    call SaveReal(udg_Matrix4Hash,m,6,m23)     
endfunction

function SetMatrix4m24 takes integer m, real m24 returns nothing
    call SaveReal(udg_Matrix4Hash,m,7,m24)     
endfunction

function SetMatrix4m31 takes integer m, real m31 returns nothing
    call SaveReal(udg_Matrix4Hash,m,8,m31)     
endfunction

function SetMatrix4m32 takes integer m, real m32 returns nothing
    call SaveReal(udg_Matrix4Hash,m,9,m32)     
endfunction

function SetMatrix4m33 takes integer m, real m33 returns nothing
    call SaveReal(udg_Matrix4Hash,m,10,m33)     
endfunction

function SetMatrix4m34 takes integer m, real m34 returns nothing
    call SaveReal(udg_Matrix4Hash,m,11,m34)     
endfunction

function SetMatrix4m41 takes integer m, real m41 returns nothing
    call SaveReal(udg_Matrix4Hash,m,12,m41)     
endfunction

function SetMatrix4m42 takes integer m, real m42 returns nothing
    call SaveReal(udg_Matrix4Hash,m,13,m42)     
endfunction

function SetMatrix4m43 takes integer m, real m43 returns nothing
    call SaveReal(udg_Matrix4Hash,m,14,m43)     
endfunction

function SetMatrix4m44 takes integer m, real m44 returns nothing
    call SaveReal(udg_Matrix4Hash,m,15,m44)     
endfunction

//=====================================================================

function CreateVector_0 takes nothing returns integer
    local integer i = LoadInteger(udg_VectorHash,0,0) + 1
    
    call SetVectorX(i,0.) 
    call SetVectorY(i,0.) 
    call SetVectorZ(i,0.) 
    
    call SaveInteger(udg_VectorHash,0,0,i)
    return i
endfunction

function CreateVector_1 takes real x, real y, real z returns integer
    local integer i = LoadInteger(udg_VectorHash,0,0) + 1
    
    call SetVectorX(i,x) 
    call SetVectorY(i,y) 
    call SetVectorZ(i,z) 
    
    call SaveInteger(udg_VectorHash,0,0,i)
    return i
endfunction

function CreateVector_2 takes integer v returns integer
    local integer i = LoadInteger(udg_VectorHash,0,0) + 1
    
    call SetVectorX(i,GetVectorX(v)) 
    call SetVectorY(i,GetVectorY(v)) 
    call SetVectorZ(i,GetVectorZ(v)) 
    
    call SaveInteger(udg_VectorHash,0,0,i)
    return i
endfunction

function SetVectorValues takes integer v, real x, real y, real z returns integer  
    call SetVectorX(v,x) 
    call SetVectorY(v,y) 
    call SetVectorZ(v,z) 
    
    return v
endfunction
    
function GetVectorLength takes integer v returns real
    return SquareRoot(GetVectorX(v)*GetVectorX(v)+GetVectorY(v)*GetVectorY(v)+GetVectorZ(v)*GetVectorZ(v))
endfunction

function GetVectorLengthSq takes integer v returns real
    return GetVectorX(v)*GetVectorX(v)+GetVectorY(v)*GetVectorY(v)+GetVectorZ(v)*GetVectorZ(v)
endfunction

function GetVectorData takes integer v returns string
    return "Vector3 id " + I2S(v) + "\nx = " + R2S(GetVectorX(v)) + "   y = " + R2S(GetVectorY(v)) + "   z = " + R2S(GetVectorZ(v))
endfunction  

function Vec3Add takes integer Output,integer v1,integer v2 returns integer
    call SetVectorX(Output,GetVectorX(v1)+GetVectorX(v2)) 
    call SetVectorY(Output,GetVectorY(v1)+GetVectorY(v2)) 
    call SetVectorZ(Output,GetVectorZ(v1)+GetVectorZ(v2))

    return Output
endfunction

function Vec3Subtract takes integer Output,integer v1,integer v2 returns integer
    call SetVectorX(Output,GetVectorX(v1)-GetVectorX(v2)) 
    call SetVectorY(Output,GetVectorY(v1)-GetVectorY(v2)) 
    call SetVectorZ(Output,GetVectorZ(v1)-GetVectorZ(v2))

    return Output
endfunction
    
function Vec3Scale takes integer Output, integer v, real r returns integer
    call SetVectorX(Output,GetVectorX(v)*r) 
    call SetVectorY(Output,GetVectorY(v)*r) 
    call SetVectorZ(Output,GetVectorZ(v)*r) 

    return Output
endfunction
    
function Vec3Division takes integer Output,integer v,real r returns integer
    call SetVectorX(Output,GetVectorX(v)/r) 
    call SetVectorY(Output,GetVectorY(v)/r) 
    call SetVectorZ(Output,GetVectorZ(v)/r)
    return Output
endfunction

function Vec3Normalize takes integer Output,integer v returns integer
    local real len = GetVectorLength(v)
    
    call SetVectorX(Output,GetVectorX(v)/len) 
    call SetVectorY(Output,GetVectorY(v)/len) 
    call SetVectorZ(Output,GetVectorZ(v)/len)

    return Output
endfunction

function Vec3Dot takes integer v1,integer v2 returns real
    return GetVectorX(v1)*GetVectorX(v2)+GetVectorY(v1)*GetVectorY(v2)+GetVectorZ(v1)*GetVectorZ(v2)
endfunction

function Vec3Cross takes integer Output,integer v1,integer v2 returns integer
    local real x = GetVectorY(v1)*GetVectorZ(v2)-GetVectorZ(v1)*GetVectorY(v2)
    local real y = GetVectorZ(v1)*GetVectorX(v2)-GetVectorX(v1)*GetVectorZ(v2)
    local real z = GetVectorX(v1)*GetVectorY(v2)-GetVectorY(v1)*GetVectorX(v2)
    call SetVectorX(Output,x) 
    call SetVectorY(Output,y) 
    call SetVectorZ(Output,z)
    return Output
endfunction

function Vec3Transform_1 takes integer Output,integer v,integer m returns integer
    local real x = GetVectorX(v)*GetMatrix3m11(m)+GetVectorY(v)*GetMatrix3m21(m)+GetVectorZ(v)*GetMatrix3m31(m)
    local real y = GetVectorX(v)*GetMatrix3m12(m)+GetVectorY(v)*GetMatrix3m22(m)+GetVectorZ(v)*GetMatrix3m32(m)
    local real z = GetVectorX(v)*GetMatrix3m13(m)+GetVectorY(v)*GetMatrix3m23(m)+GetVectorZ(v)*GetMatrix3m33(m)
    
    call SetVectorX(Output,x) 
    call SetVectorY(Output,y) 
    call SetVectorZ(Output,z)
    
    return Output
endfunction

function Vec3Transform_2 takes integer Output,integer v,integer m returns integer
    local real x = GetVectorX(v)*GetMatrix4m11(m)+GetVectorY(v)*GetMatrix4m21(m)+GetVectorZ(v)*GetMatrix4m31(m)+GetMatr?ix4m41(m)
    local real y = GetVectorX(v)*GetMatrix4m12(m)+GetVectorY(v)*GetMatrix4m22(m)+GetVectorZ(v)*GetMatrix4m32(m)+GetMatr?ix4m42(m)
    local real z = GetVectorX(v)*GetMatrix4m13(m)+GetVectorY(v)*GetMatrix4m23(m)+GetVectorZ(v)*GetMatrix4m33(m)+GetMatr?ix4m43(m)
    local real w = GetVectorX(v)*GetMatrix4m14(m)+GetVectorY(v)*GetMatrix4m24(m)+GetVectorZ(v)*GetMatrix4m34(m)+GetMatr?ix4m44(m)
    
    call SetVectorX(Output,x/w) 
    call SetVectorY(Output,y/w) 
    call SetVectorZ(Output,z/w)
    
    return Output
endfunction

//=====================================================================

function CreateMatrix3_0 takes nothing returns integer
    local integer i = LoadInteger(udg_Matrix3Hash,0,0) + 1

    call SetMatrix3m11(i,0.)
    call SetMatrix3m12(i,0.)
    call SetMatrix3m13(i,0.)
    call SetMatrix3m21(i,0.)
    call SetMatrix3m22(i,0.)
    call SetMatrix3m23(i,0.)
    call SetMatrix3m31(i,0.)
    call SetMatrix3m32(i,0.)
    call SetMatrix3m33(i,0.)

    call SaveInteger(udg_Matrix3Hash,0,0,i)
    return i
endfunction

function CreateMatrix3_1 takes real r11,real r12,real r13,real r21,real r22,real r23,real r31,real r32,real r33 returns integer
    local integer i = LoadInteger(udg_Matrix3Hash,0,0) + 1
    
    call SetMatrix3m11(i,r11)
    call SetMatrix3m12(i,r12)
    call SetMatrix3m13(i,r13)
    call SetMatrix3m21(i,r21)
    call SetMatrix3m22(i,r22)
    call SetMatrix3m23(i,r23)
    call SetMatrix3m31(i,r31)
    call SetMatrix3m32(i,r32)
    call SetMatrix3m33(i,r33)
    
    call SaveInteger(udg_Matrix3Hash,0,0,i)
    return i
endfunction

function CreateMatrix3_2 takes integer m returns integer
    local integer i = LoadInteger(udg_Matrix3Hash,0,0) + 1
    
    call SetMatrix3m11(i,GetMatrix3m11(m))
    call SetMatrix3m12(i,GetMatrix3m12(m))
    call SetMatrix3m13(i,GetMatrix3m13(m))
    call SetMatrix3m21(i,GetMatrix3m21(m))
    call SetMatrix3m22(i,GetMatrix3m22(m))
    call SetMatrix3m23(i,GetMatrix3m23(m))
    call SetMatrix3m31(i,GetMatrix3m31(m))
    call SetMatrix3m32(i,GetMatrix3m32(m))
    call SetMatrix3m33(i,GetMatrix3m33(m))
    
    call SaveInteger(udg_Matrix3Hash,0,0,i)
    return i
endfunction

function SetMatrix3Values takes integer m,real r11,real r12,real r13,real r21,real r22,real r23,real r31,real r32,real r33 returns integer
    call SetMatrix3m11(m,r11)
    call SetMatrix3m12(m,r12)
    call SetMatrix3m13(m,r13)
    call SetMatrix3m21(m,r21)
    call SetMatrix3m22(m,r22)
    call SetMatrix3m23(m,r23)
    call SetMatrix3m31(m,r31)
    call SetMatrix3m32(m,r32)
    call SetMatrix3m33(m,r33)
    
    return m
endfunction
    
function GetMatrix3Data takes integer m returns string
    return "Matrux3 id " + I2S(m) + "\n" + R2S(GetMatrix3m11(m)) + "  " + R2S(GetMatrix3m12(m)) + "  " + R2S(GetMatrix3m13(m)) + "\n" + R2S(GetMatrix3m21(m)) + "  " + R2S(GetMatrix3m22(m)) + "  " + R2S(GetMatrix3m23(m)) + "\n" + R2S(GetMatrix3m31(m)) + "  " + R2S(GetMatrix3m32(m)) + "  " + R2S(GetMatrix3m33(m))
endfunction

function Matrix3Multiply takes integer Output,integer m1,integer m2 returns integer
    local real r11 = GetMatrix3m11(m1)*GetMatrix3m11(m2)+GetMatrix3m21(m1)*GetMatrix3m12(m2)+GetMatrix3m31(m1)*GetMatrix3?m13(m2)
    local real r12 = GetMatrix3m12(m1)*GetMatrix3m11(m2)+GetMatrix3m22(m1)*GetMatrix3m12(m2)+GetMatrix3m32(m1)*GetMatrix3?m13(m2) 
    local real r13 = GetMatrix3m13(m1)*GetMatrix3m11(m2)+GetMatrix3m23(m1)*GetMatrix3m12(m2)+GetMatrix3m33(m1)*GetMatrix3?m13(m2) 
    local real r21 = GetMatrix3m11(m1)*GetMatrix3m21(m2)+GetMatrix3m21(m1)*GetMatrix3m22(m2)+GetMatrix3m31(m1)*GetMatrix3?m23(m2) 
    local real r22 = GetMatrix3m12(m1)*GetMatrix3m21(m2)+GetMatrix3m22(m1)*GetMatrix3m22(m2)+GetMatrix3m32(m1)*GetMatrix3?m23(m2) 
    local real r23 = GetMatrix3m13(m1)*GetMatrix3m21(m2)+GetMatrix3m23(m1)*GetMatrix3m22(m2)+GetMatrix3m33(m1)*GetMatrix3?m23(m2) 
    local real r31 = GetMatrix3m11(m1)*GetMatrix3m31(m2)+GetMatrix3m21(m1)*GetMatrix3m32(m2)+GetMatrix3m31(m1)*GetMatrix3?m33(m2) 
    local real r32 = GetMatrix3m12(m1)*GetMatrix3m31(m2)+GetMatrix3m22(m1)*GetMatrix3m32(m2)+GetMatrix3m32(m1)*GetMatrix3?m33(m2) 
    local real r33 = GetMatrix3m13(m1)*GetMatrix3m31(m2)+GetMatrix3m23(m1)*GetMatrix3m32(m2)+GetMatrix3m33(m1)*GetMatrix3?m33(m2)
    return SetMatrix3Values(Output,r11,r12,r13,r21,r22,r23,r31,r32,r33)
endfunction

function Matrix3Scaling takes integer Output,real x,real y,real z returns integer
    return SetMatrix3Values(Output,x,0.,0.,0.,y,0.,0.,0.,z)
endfunction

function Matrix3RotationX takes integer Output,real a returns integer
    return SetMatrix3Values(Output,1.,0.,0.,0.,Cos(a),-1.*Sin(a),0.,Sin(a),Cos(a))
endfunction

function Matrix3RotationY takes integer Output,real a returns integer
    return SetMatrix3Values(Output,Cos(a),0.,Sin(a),0.,1.,0.,-1.*Sin(a),0.,Cos(a))
endfunction

function Matrix3RotationZ takes integer Output,real a returns integer
    return SetMatrix3Values(Output,Cos(a),-1.*Sin(a),0.,Sin(a),Cos(a),0.,0.,0.,1.)
endfunction

function Matrix3RotationAxis takes integer Output,integer v,real a returns integer
    local real cosa = Cos(a)
    local real sina = Sin(a)
    local real r11 = cosa+(1-cosa)*GetVectorX(v)*GetVectorX(v)
    local real r12 = (1-cosa)*GetVectorX(v)*GetVectorY(v)-sina*GetVectorZ(v)
    local real r13 = (1-cosa)*GetVectorX(v)*GetVectorZ(v)+ sina*GetVectorY(v)
    local real r21 = (1-cosa)*GetVectorY(v)*GetVectorX(v)+sina*GetVectorZ(v)
    local real r22 = cosa+(1-cosa)*GetVectorY(v)*GetVectorY(v)
    local real r23 = (1-cosa)*GetVectorY(v)*GetVectorZ(v)-sina*GetVectorX(v)
    local real r31 = (1-cosa)*GetVectorZ(v)*GetVectorX(v)-sina*GetVectorY(v)
    local real r32 = (1-cosa)*GetVectorZ(v)*GetVectorY(v)+ sina*GetVectorX(v)
    local real r33 = cosa+(1-cosa)*GetVectorZ(v)*GetVectorZ(v)
    return SetMatrix3Values(Output,r11,r12,r13,r21,r22,r23,r31,r32,r33)
endfunction

function Matrix3RotationYawPitchRoll takes integer Output,real Yaw,real Pitch,real Roll returns integer
    local real cosa = Cos(Yaw)
    local real sina = Sin(Yaw)
    local real cosb = Cos(Pitch)
    local real sinb = Sin(Pitch)
    local real cosy = Cos(Roll)
    local real siny = Sin(Roll)
    local real r11 = cosa*cosb  
    local real r12 = cosa*sinb*siny-sina*cosy  
    local real r13 = cosa*sinb*cosy+sina*siny  
    local real r21 = sina*cosb  
    local real r22 = sina*sinb*siny+cosa*cosy  
    local real r23 = sina*sinb*cosy-cosa*siny  
    local real r31 = -1.*sinb 
    local real r32 = cosb*siny  
    local real r33 = cosb*cosy
    return SetMatrix3Values(Output,r11,r12,r13,r21,r22,r23,r31,r32,r33)
endfunction

//=====================================================================

function CreateMatrix4_0 takes nothing returns integer
    local integer i = LoadInteger(udg_Matrix4Hash,0,0) + 1

    call SetMatrix4m11(i,0.)
    call SetMatrix4m12(i,0.)
    call SetMatrix4m13(i,0.)
    call SetMatrix4m14(i,0.)
    call SetMatrix4m21(i,0.)
    call SetMatrix4m22(i,0.)
    call SetMatrix4m23(i,0.)
    call SetMatrix4m24(i,0.)
    call SetMatrix4m31(i,0.)
    call SetMatrix4m32(i,0.)
    call SetMatrix4m33(i,0.)
    call SetMatrix4m34(i,0.)
    call SetMatrix4m41(i,0.)
    call SetMatrix4m42(i,0.)
    call SetMatrix4m43(i,0.)
    call SetMatrix4m44(i,0.)

    call SaveInteger(udg_Matrix4Hash,0,0,i)
    return i
endfunction

function CreateMatrix4_1 takes real r11,real r12,real r13,real r14,real r21,real r22,real r23,real r24,real r31,real r32,real r33,real r34,real r41,real r42,real r43,real r44 returns integer
    local integer i = LoadInteger(udg_Matrix4Hash,0,0) + 1

    call SetMatrix4m11(i,r11)
    call SetMatrix4m12(i,r12)
    call SetMatrix4m13(i,r13)
    call SetMatrix4m14(i,r14)
    call SetMatrix4m21(i,r21)
    call SetMatrix4m22(i,r22)
    call SetMatrix4m23(i,r23)
    call SetMatrix4m24(i,r24)
    call SetMatrix4m31(i,r31)
    call SetMatrix4m32(i,r32)
    call SetMatrix4m33(i,r33)
    call SetMatrix4m34(i,r34)
    call SetMatrix4m41(i,r41)
    call SetMatrix4m42(i,r42)
    call SetMatrix4m43(i,r43)
    call SetMatrix4m44(i,r44)

    call SaveInteger(udg_Matrix4Hash,0,0,i)
    return i
endfunction

function CreateMatrix4_2 takes integer m returns integer
    local integer i = LoadInteger(udg_Matrix4Hash,0,0) + 1

    call SetMatrix4m11(i,GetMatrix4m11(m))
    call SetMatrix4m12(i,GetMatrix4m12(m))
    call SetMatrix4m13(i,GetMatrix4m13(m))
    call SetMatrix4m14(i,GetMatrix4m14(m))
    call SetMatrix4m21(i,GetMatrix4m21(m))
    call SetMatrix4m22(i,GetMatrix4m22(m))
    call SetMatrix4m23(i,GetMatrix4m23(m))
    call SetMatrix4m24(i,GetMatrix4m24(m))
    call SetMatrix4m31(i,GetMatrix4m31(m))
    call SetMatrix4m32(i,GetMatrix4m32(m))
    call SetMatrix4m33(i,GetMatrix4m33(m))
    call SetMatrix4m34(i,GetMatrix4m34(m))
    call SetMatrix4m41(i,GetMatrix4m41(m))
    call SetMatrix4m42(i,GetMatrix4m42(m))
    call SetMatrix4m43(i,GetMatrix4m43(m))
    call SetMatrix4m44(i,GetMatrix4m44(m))

    call SaveInteger(udg_Matrix4Hash,0,0,i)
    return i
endfunction

function CreateMatrix4_3 takes integer m returns integer
    local integer i = LoadInteger(udg_Matrix4Hash,0,0) + 1

    call SetMatrix4m11(i,GetMatrix3m11(m))
    call SetMatrix4m12(i,GetMatrix3m12(m))
    call SetMatrix4m13(i,GetMatrix3m13(m))
    call SetMatrix4m14(i,0.)
    call SetMatrix4m21(i,GetMatrix3m21(m))
    call SetMatrix4m22(i,GetMatrix3m22(m))
    call SetMatrix4m23(i,GetMatrix3m23(m))
    call SetMatrix4m24(i,0.)
    call SetMatrix4m31(i,GetMatrix3m31(m))
    call SetMatrix4m32(i,GetMatrix3m32(m))
    call SetMatrix4m33(i,GetMatrix3m33(m))
    call SetMatrix4m34(i,0.)
    call SetMatrix4m41(i,0.)
    call SetMatrix4m42(i,0.)
    call SetMatrix4m43(i,0.)
    call SetMatrix4m44(i,1.)

    call SaveInteger(udg_Matrix4Hash,0,0,i)
    return i
endfunction

function SetMatrix4Values takes integer m,real r11,real r12,real r13,real r14,real r21,real r22,real r23,real r24,real r31,real r32,real r33,real r34,real r41,real r42,real r43,real r44 returns integer
    call SetMatrix4m11(m,r11)
    call SetMatrix4m12(m,r12)
    call SetMatrix4m13(m,r13)
    call SetMatrix4m14(m,r14)
    call SetMatrix4m21(m,r21)
    call SetMatrix4m22(m,r22)
    call SetMatrix4m23(m,r23)
    call SetMatrix4m24(m,r24)
    call SetMatrix4m31(m,r31)
    call SetMatrix4m32(m,r32)
    call SetMatrix4m33(m,r33)
    call SetMatrix4m34(m,r34)
    call SetMatrix4m41(m,r41)
    call SetMatrix4m42(m,r42)
    call SetMatrix4m43(m,r43)
    call SetMatrix4m44(m,r44)
    
    return m
endfunction    

function GetMatrix4Data takes integer m returns string
    return "Matrux4 id " + I2S(m) + "\n" + R2S(GetMatrix4m11(m)) + "  " + R2S(GetMatrix4m12(m)) + "  " + R2S(GetMatrix4m13(m)) + "  " + R2S(GetMatrix4m14(m)) + "\n" + R2S(GetMatrix4m21(m)) + "  " + R2S(GetMatrix4m22(m)) + "  " + R2S(GetMatrix4m23(m)) + "  " + R2S(GetMatrix4m24(m)) + "\n" + R2S(GetMatrix4m31(m)) + "  " + R2S(GetMatrix4m32(m)) + "  " + R2S(GetMatrix4m33(m)) + "  " + R2S(GetMatrix4m34(m)) + "\n" + R2S(GetMatrix4m41(m)) + "  " + R2S(GetMatrix4m42(m)) + "  " + R2S(GetMatrix4m43(m)) + "  " + R2S(GetMatrix4m44(m))
endfunction 

function Matrix4Multiply takes integer Output,integer m1,integer m2 returns integer
    local real r11 = GetMatrix4m11(m1)*GetMatrix4m11(m2)+GetMatrix4m21(m1)*GetMatrix4m12(m2)+GetMatrix4m31(m1)*GetMatrix4?m13(m2)+GetMatrix4m41(m1)*GetMatrix4m14(m2) 
    local real r12 = GetMatrix4m12(m1)*GetMatrix4m11(m2)+GetMatrix4m22(m1)*GetMatrix4m12(m2)+GetMatrix4m32(m1)*GetMatrix4?m13(m2)+GetMatrix4m42(m1)*GetMatrix4m14(m2)
    local real r13 = GetMatrix4m13(m1)*GetMatrix4m11(m2)+GetMatrix4m23(m1)*GetMatrix4m12(m2)+GetMatrix4m33(m1)*GetMatrix4?m13(m2)+GetMatrix4m43(m1)*GetMatrix4m14(m2) 
    local real r14 = GetMatrix4m14(m1)*GetMatrix4m11(m2)+GetMatrix4m24(m1)*GetMatrix4m12(m2)+GetMatrix4m34(m1)*GetMatrix4?m13(m2)+GetMatrix4m44(m1)*GetMatrix4m14(m2)
    local real r21 = GetMatrix4m11(m1)*GetMatrix4m21(m2)+GetMatrix4m21(m1)*GetMatrix4m22(m2)+GetMatrix4m31(m1)*GetMatrix4?m23(m2)+GetMatrix4m41(m1)*GetMatrix4m24(m2)
    local real r22 = GetMatrix4m12(m1)*GetMatrix4m21(m2)+GetMatrix4m22(m1)*GetMatrix4m22(m2)+GetMatrix4m32(m1)*GetMatrix4?m23(m2)+GetMatrix4m42(m1)*GetMatrix4m24(m2)
    local real r23 = GetMatrix4m13(m1)*GetMatrix4m21(m2)+GetMatrix4m23(m1)*GetMatrix4m22(m2)+GetMatrix4m33(m1)*GetMatrix4?m23(m2)+GetMatrix4m43(m1)*GetMatrix4m24(m2)
    local real r24 = GetMatrix4m14(m1)*GetMatrix4m21(m2)+GetMatrix4m24(m1)*GetMatrix4m22(m2)+GetMatrix4m34(m1)*GetMatrix4?m23(m2)+GetMatrix4m44(m1)*GetMatrix4m24(m2)
    local real r31 = GetMatrix4m11(m1)*GetMatrix4m31(m2)+GetMatrix4m21(m1)*GetMatrix4m32(m2)+GetMatrix4m31(m1)*GetMatrix4?m33(m2)+GetMatrix4m41(m1)*GetMatrix4m34(m2)
    local real r32 = GetMatrix4m12(m1)*GetMatrix4m31(m2)+GetMatrix4m22(m1)*GetMatrix4m32(m2)+GetMatrix4m32(m1)*GetMatrix4?m33(m2)+GetMatrix4m42(m1)*GetMatrix4m34(m2)
    local real r33 = GetMatrix4m13(m1)*GetMatrix4m31(m2)+GetMatrix4m22(m1)*GetMatrix4m32(m2)+GetMatrix4m33(m1)*GetMatrix4?m33(m2)+GetMatrix4m43(m1)*GetMatrix4m34(m2)
    local real r34 = GetMatrix4m14(m1)*GetMatrix4m31(m2)+GetMatrix4m24(m1)*GetMatrix4m32(m2)+GetMatrix4m34(m1)*GetMatrix4?m33(m2)+GetMatrix4m44(m1)*GetMatrix4m34(m2)
    local real r41 = GetMatrix4m11(m1)*GetMatrix4m41(m2)+GetMatrix4m21(m1)*GetMatrix4m42(m2)+GetMatrix4m31(m1)*GetMatrix4?m43(m2)+GetMatrix4m41(m1)*GetMatrix4m44(m2)
    local real r42 = GetMatrix4m12(m1)*GetMatrix4m41(m2)+GetMatrix4m22(m1)*GetMatrix4m42(m2)+GetMatrix4m32(m1)*GetMatrix4?m43(m2)+GetMatrix4m42(m1)*GetMatrix4m44(m2)
    local real r43 = GetMatrix4m13(m1)*GetMatrix4m41(m2)+GetMatrix4m23(m1)*GetMatrix4m42(m2)+GetMatrix4m33(m1)*GetMatrix4?m43(m2)+GetMatrix4m43(m1)*GetMatrix4m44(m2) 
    local real r44 = GetMatrix4m14(m1)*GetMatrix4m41(m2)+GetMatrix4m24(m1)*GetMatrix4m42(m2)+GetMatrix4m34(m1)*GetMatrix4?m43(m2)+GetMatrix4m44(m1)*GetMatrix4m44(m2)
    
    return SetMatrix4Values(Output,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
endfunction

function InitMathLib takes nothing returns nothing
   set udg_VECTOR3_Zero = CreateVector_0()
   set udg_VECTOR3_oneX = CreateVector_1(1.,0.,0.)
   set udg_VECTOR3_oneY = CreateVector_1(0.,1.,0.)
   set udg_VECTOR3_oneZ = CreateVector_1(0.,0.,1.)
   set udg_MATRIX3_Zero = CreateMatrix3_0()
   set udg_MATRIX3_E = CreateMatrix3_1(1.,0.,0.,0.,1.,0.,0.,0.,1.)
   set udg_MATRIX4_Zero = CreateMatrix4_0()
   set udg_MATRIX4_E = CreateMatrix4_1(1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.)
endfunction

//library Math ends
 

bowser499

Member
Reaction score
1
Code:
//library Camera:
//~~REQUIRES: udg_CameraHash - Hashtable ~~
//~~          udg_TypeUnit - Integer ~~
//~~          udg_GL4Cam - Location
//~~          udg_AtUnit - Unit ~~
//~~          udg_WidthScreen | udg_HeightScreen | udg_AspectRatio | udg_DeltaZ - Real ~~

//library Camera:

function GetCamCustomValue takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,0)
endfunction

function GetCamChange takes integer cam returns boolean
    return LoadBoolean(udg_CameraHash,cam,1)
endfunction

function GetCamEye takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,2)
endfunction

function GetCamAt takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,3)
endfunction

function GetCamDistance takes integer cam returns real
    return LoadReal(udg_CameraHash,cam,4)
endfunction

function GetCamYaw takes integer cam returns real
    return LoadReal(udg_CameraHash,cam,5)
endfunction

function GetCamPitch takes integer cam returns real
    return LoadReal(udg_CameraHash,cam,6)
endfunction

function GetCamRoll takes integer cam returns real
    return LoadReal(udg_CameraHash,cam,7)
endfunction

function GetCamAxisX takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,8)
endfunction

function GetCamAxisY takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,9)
endfunction

function GetCamAxisZ takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,10)
endfunction

function GetCamView takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,11)
endfunction

function GetCamProjection takes integer cam returns integer
    return LoadInteger(udg_CameraHash,cam,12)
endfunction

function SetCamCustomValue takes integer cam, integer cv returns nothing
    call SaveInteger(udg_CameraHash,cam,0,cv)
endfunction

function SetCamChange takes integer cam, boolean change returns nothing
    call SaveBoolean(udg_CameraHash,cam,1,change)
endfunction

function SetCamEye takes integer cam, integer eye returns nothing
    call SaveInteger(udg_CameraHash,cam,2,eye)
endfunction

function SetCamAt takes integer cam, integer at returns nothing
    call SaveInteger(udg_CameraHash,cam,3,at)
endfunction

function SetCamDistance takes integer cam, real distance returns nothing
    call SaveReal(udg_CameraHash,cam,4,distance)
endfunction

function SetCamYaw takes integer cam, real yaw returns nothing
    call SaveReal(udg_CameraHash,cam,5,yaw)
endfunction

function SetCamPitch takes integer cam, real pitch returns nothing
    call SaveReal(udg_CameraHash,cam,6,pitch)
endfunction

function SetCamRoll takes integer cam, real roll returns nothing
    call SaveReal(udg_CameraHash,cam,7,roll)
endfunction

function SetCamAxisX takes integer cam, integer axisx returns nothing
    call SaveInteger(udg_CameraHash,cam,8,axisx)
endfunction

function SetCamAxisY takes integer cam, integer axisy returns nothing
    call SaveInteger(udg_CameraHash,cam,9,axisy)
endfunction

function SetCamAxisZ takes integer cam, integer axisz returns nothing
    call SaveInteger(udg_CameraHash,cam,10,axisz)
endfunction

function SetCamView takes integer cam, integer view returns nothing
    call SaveInteger(udg_CameraHash,cam,11,view)
endfunction

function SetCamProjection takes integer cam, integer projection returns nothing
    call SaveInteger(udg_CameraHash,cam,12,projection)
endfunction

//=====================================================================

function Matrix4Perspective1 takes integer Output,real fovy,real Aspect,real zn,real zf returns integer
    local real r11 = 2. * zn / fovy 
    local real r12 = 0.
    local real r13 = 0.
    local real r14 = 0.
    local real r21 = 0.
    local real r22 = 2. * zn / Aspect
    local real r23 = 0.
    local real r24 = 0.
    local real r31 = 0.
    local real r32 = 0.
    local real r33 = zf / ( zf - zn )
    local real r34 = 1.
    local real r41 = 0.
    local real r42 = 0.
    local real r43 = zn*zf/(zn-zf)
    local real r44 = 0.
    
    //return SetMatrix4Values(Output,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
endfunction

function Matrix4Perspective2 takes integer Output,real n,real f,real r,real l,real t,real b returns integer
    local real r11 = 2.*n/(r-l)
    local real r12 = 0.
    local real r13 = (r+l)/(r-l) 
    local real r14 = 0.
    local real r21 = 0.
    local real r22 = 2.*n/(t-b) 
    local real r23 = (t+b)/(t-b)
    local real r24 = 0.
    local real r31 = 0.
    local real r32 = 0.
    local real r33 = -1.*(f+n)/(f-n)
    local real r34 = -2.*f*n/(f-n)
    local real r41 = 0.
    local real r42 = 0.
    local real r43 = -1
    local real r44 = 0.
    
    return SetMatrix4Values(Output,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
endfunction

function Matrix4Look takes integer Output,integer PosCamera,integer AxisX,integer AxisY,integer AxisZ returns integer
    local real r11 = GetVectorX(AxisX)
    local real r12 = GetVectorX(AxisY)
    local real r13 = GetVectorX(AxisZ)
    local real r14 = 0.
    local real r21 = GetVectorY(AxisX)
    local real r22 = GetVectorY(AxisY)
    local real r23 = GetVectorY(AxisZ)
    local real r24 = 0.
    local real r31 = GetVectorZ(AxisX)
    local real r32 = GetVectorZ(AxisY)
    local real r33 = GetVectorZ(AxisZ)
    local real r34 = 0.
    local real r41 = -1.*Vec3Dot(AxisX,PosCamera)
    local real r42 = -1.*Vec3Dot(AxisY,PosCamera)
    local real r43 = -1.*Vec3Dot(AxisZ,PosCamera)
    local real r44 = 1.
    
    return SetMatrix4Values(Output,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
endfunction

function Win2World takes integer cam,real X,real Y,real Range returns integer
    local integer eye = GetCamEye(cam)
    local integer axisx = GetCamAxisZ(cam)
    local integer axisy = GetCamAxisY(cam)
    local integer axisz = GetCamAxisZ(cam)
    local real x = GetVectorX(eye) + GetVectorX(axisz) * Range + X * GetVectorX(axisx) * udg_WidthScreen * Range + Y * GetVectorX(axisy) * udg_HeightScreen * Range
    local real y = GetVectorY(eye) + GetVectorX(axisz) * Range + X * GetVectorY(axisx) * udg_WidthScreen * Range + Y * GetVectorY(axisy) * udg_HeightScreen * Range
    local real z = GetVectorZ(eye) + GetVectorX(axisz) * Range + X * GetVectorZ(axisx) * udg_WidthScreen * Range + Y * GetVectorZ(axisy) * udg_HeightScreen * Range

    return CreateVector_1(x,y,z)
endfunction

function World2Win takes integer cam,real X,real Y,real Z returns integer
    local integer Pos = CreateVector_1(X,Y,Z)
    local boolean b
    call Vec3Transform_2(Pos,Pos,GetCamView(cam))
    set b = GetVectorZ(Pos) < 0
    call Vec3Transform_2(Pos,Pos,GetCamProjection(cam))
    if b then
        call SetVectorZ(Pos,-1.*GetVectorZ(Pos))
    endif
    return Pos
endfunction
    
function UpdateDistanceYawPitch takes integer cam returns nothing
    local integer eye = GetCamEye(cam)
    local integer at = GetCamAt(cam)
    local real dx = GetVectorX(at) - GetVectorX(eye)
    local real dy = GetVectorY(at) - GetVectorY(eye)
    local real dz = GetVectorZ(at) - GetVectorZ(eye)
    local real dist = SquareRoot(dx*dx+dy*dy+dz*dz)
    local real len2d = SquareRoot(dx*dx+dy*dy)
    local real yaw = Atan2(dy,dx)
    local real pitch = Atan2(dz,len2d)
    
    call SetCamDistance(cam,dist)
    call SetCamYaw(cam,yaw)
    call SetCamPitch(cam,pitch)
endfunction
    
function UpdateAxisMatrix takes integer cam returns nothing
    local integer eye = GetCamEye(cam)
    local integer at = GetCamAt(cam)
    local integer view = GetCamView(cam)
    local real roll = GetCamRoll(cam)
    local integer axisx = GetCamAxisZ(cam)
    local integer axisy = GetCamAxisY(cam)
    local integer axisz = GetCamAxisZ(cam)
    local integer normalizer = Vec3Subtract(axisz,at,eye)
    local integer crossnorm = Vec3Cross(axisx,axisz,udg_VECTOR3_oneZ)
    local integer crosstrans = Vec3Cross(axisy,axisx,axisz)
    local integer mat = CreateMatrix3_0()
    
    call Vec3Normalize(axisz,normalizer)
    set mat = Matrix3RotationAxis(mat,axisz,-1.*roll)
    call Vec3Normalize(axisx,crossnorm)
    call Vec3Transform_1(axisy,crosstrans,mat) 
    call Vec3Transform_1(axisx,axisx,mat)
    call Matrix4Look(view,eye,axisx,axisy,axisz)
endfunction

function ApplyCameraForPlayer takes integer cam,player p,boolean IgnorChange returns boolean
    local real yaw = GetCamYaw(cam) 
    local real pitch = GetCamPitch(cam)
    local real roll = GetCamRoll(cam)  
    local real dist = GetCamDistance(cam)
    local integer at = GetCamAt(cam) 
    local boolean change = GetCamChange(cam)
    
    if GetLocalPlayer() == p then
        call SetCameraField(CAMERA_FIELD_ROTATION,yaw*57.295827,0.)
        call SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK,pitch*57.295827,0.)
        call SetCameraField(CAMERA_FIELD_ROLL,roll*57.295827,0.)
        call SetCameraField(CAMERA_FIELD_TARGET_DISTANCE,dist,0.)
        call SetCameraTargetController(udg_AtUnit,GetVectorX(at),GetVectorY(at),false)
        call SetCameraField(CAMERA_FIELD_ZOFFSET,GetVectorZ(at)-udg_DeltaZ,0.)
    endif
    
    if change or IgnorChange then
        call SetCamChange(cam,false)
        return true
    endif
    return false
endfunction

function SetPosition takes integer cam,real x,real y,real z returns nothing
    local integer eye = GetCamEye(cam) 
    local integer at = GetCamAt(cam) 
    local real dx = x - GetVectorX(at)
    local real dy = y - GetVectorY(at)
    local real dz = z - GetVectorZ(at)
    local real nx = GetVectorX(eye) + dx
    local real ny = GetVectorY(eye) + dy
    local real nz = GetVectorZ(eye) + dz
    
    call SetVectorX(eye,nx)
    call SetVectorY(eye,ny)
    call SetVectorZ(eye,nz)
    
    call SetVectorX(at,x)
    call SetVectorY(at,y)
    call SetVectorZ(at,z)
    
    call SetCamChange(cam,true)
endfunction
    
function SetEyeAndAt takes integer cam,real ex,real ey,real ez,real tx,real ty,real tz returns nothing
    local integer eye = GetCamEye(cam) 
    local integer at = GetCamAt(cam) 
    
    call SetVectorX(eye,ex)
    call SetVectorY(eye,ey)
    call SetVectorZ(eye,ez)
    
    call SetVectorX(at,tx)
    call SetVectorY(at,ty)
    call SetVectorZ(at,tz)
    
    call UpdateDistanceYawPitch(cam)
    call UpdateAxisMatrix(cam) 
    
    call SetCamChange(cam,true)
endfunction
    
function SetYawPitchRoll takes integer cam,real yaw,real pitch,real roll,boolean EyeLock returns nothing
    local integer eye = GetCamEye(cam) 
    local integer at = GetCamAt(cam)
    local real dist = GetCamDist(cam)
    local real Z = dist * Sin(pitch)
    local real XY = dist * Cos(pitch)
    local real X = XY * Cos(yaw)
    local real Y = XY * Sin(yaw)
    local real tx = GetVectorX(eye) + X
    local real ty = GetVectorY(eye) + Y
    local real tz = GetVectorZ(eye) + Z
    local real ex = GetVectorX(at) - X
    local real ey = GetVectorY(at) - Y
    local real ez = GetVectorZ(at) - Z
    
    call SetCamYaw(cam,yaw)
    call SetCamPitch(cam,pitch)
    call SetCamRoll(cam,roll)
    
    if EyeLock then
        call SetVectorX(at,tx)
        call SetVectorY(at,ty)
        call SetVectorZ(at,tz)
    else
        call SetVectorX(eye,ex)
        call SetVectorY(eye,ey)
        call SetVectorZ(eye,ez)
    endif
    
    call UpdateAxisMatrix(cam)
    call SetCamChange(cam,true)
endfunction
    
function CreateCamera takes nothing returns integer
    local integer i = LoadInteger(udg_CameraHash,0,0) + 1
    local integer eye = CreateVector_1(0.,-922.668,udg_DeltaZ+1367.912)
    local integer at = CreateVector_1(0.,0.,udg_DeltaZ)
    local integer axisx = CreateVector_0()
    local integer axisy = CreateVector_0()
    local integer axisz = CreateVector_0()
    local integer view = CreateMatrix4_0()
    local integer projection = Matrix4Perspective2(CreateMatrix4_0(),.5,10000.,-1.*udg_WidthScreen/2.,udg_WidthScreen/2.,-1.*udg_He?ightScreen/2.,udg_HeightScreen/2.)
    
    call SetCamCustomValue(i,0)
    call SetCamChange(i,true)
    call SetCamEye(i,eye)
    call SetCamAt(i,at)
    call SetCamDistance(i,0.)
    call SetCamYaw(i,0.)
    call SetCamPitch(i,0.)
    call SetCamRoll(i,0.)
    call SetCamAxisX(i,axisx)
    call SetCamAxisY(i,axisy)
    call SetCamAxisZ(i,axisz)
    call SetCamView(i,view)
    call SetCamProjection(i,projection)
    
    call UpdateDistanceYawPitch(i)
    call UpdateAxisMatrix(i)
        
    call SaveInteger(udg_CameraHash,0,0,i)
    return i
endfunction

function InitDeltaZ_Timer takes nothing returns nothing
    set udg_DeltaZ = GetCameraTargetPositionZ()
    call SetCameraPosition(udg_TempX,udg_TempY)
    call DestroyTimer(GetExpiredTimer())
endfunction

function InitDeltaZ takes nothing returns nothing
    set udg_TempX = GetCameraTargetPositionX()
    set udg_TempY = GetCameraTargetPositionY()
    call SetCameraPosition(0,0)
    call TimerStart(CreateTimer(),.04,false,function InitDeltaZ_Timer)
endfunction

function CameraInit takes nothing returns nothing
    set udg_TypeUnit = 'dgui'
    set udg_DeltaZ = 0.
    set udg_GL4Cam = Location(0,0)
    set udg_AtUnit = CreateUnit(Player(15),udg_TypeUnit,0.,0.,0.)
    set udg_WidthScreen = .544
    set udg_HeightScreen = .302
    set udg_AspectRatio = udg_WidthScreen / udg_HeightScreen 
    call ShowUnit(udg_AtUnit,false)
    call InitDeltaZ()
endfunction

//library Camera ends
 

bowser499

Member
Reaction score
1
Code:
//library DGUI:


function GetTriggerButton takes nothing returns integer
    return udg_TriggerButton
endfunction

function GetZ4DGUI takes real X,real Y returns real
    call MoveLocation(udg_GL4DGUI , X , Y)
    return GetLocationZ(udg_GL4DGUI)
endfunction

function FineIndexAnimModel takes real w,real h,real z returns integer
    local real W = w * udg_WidthScreen * z
    local real H = h * udg_HeightScreen * z
    local real anim
    if H < W then
        set anim = 10.*(W/H-1)
        return R2I_n(anim)
    else
        set anim = 10.*(H/W-1.)
        if anim >= .5 then
            return 100 + R2I_n(anim)
        endif
    endif
    return 0
endfunction

function FineSizeModel takes real w,real h,real z returns real
    local real W = w * udg_WidthScreen * z
    local real H = h * udg_HeightScreen * z
    if H < W then
        return .5 * H
    else
        return .5 * W
    endif
endfunction

constant function TypeSkinChanger takes nothing returns integer
    return 'A000'
endfunction 

//=====================================================================

function GetButtonCustomValue takes integer btn returns integer
    return LoadInteger(udg_ButtonHash,btn,0)
endfunction

function GetButtonCamera takes integer btn returns integer
    return LoadInteger(udg_ButtonHash,btn,1)
endfunction

function GetButtonWidth takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,2)
endfunction

function GetButtonHeight takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,3)
endfunction

function GetButtonMinX takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,4)
endfunction

function GetButtonMaxX takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,5)
endfunction

function GetButtonMaxY takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,6)
endfunction

function GetButtonMinY takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,7)
endfunction

function GetButtonZ takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,8)
endfunction

function GetButtonCenterX takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,9)
endfunction

function GetButtonCenterY takes integer btn returns real
    return LoadReal(udg_ButtonHash,btn,10)
endfunction

function GetButtonShow takes integer btn returns boolean
    return LoadBoolean(udg_ButtonHash,btn,11)
endfunction

function GetButtonTrigLClick takes integer btn returns trigger
    return LoadTriggerHandle(udg_ButtonHash,btn,12)
endfunction

function GetButtonTrigRClick takes integer btn returns trigger
    return LoadTriggerHandle(udg_ButtonHash,btn,13)
endfunction

function GetButtonPicture takes integer btn returns unit
    return LoadUnitHandle(udg_ButtonHash,btn,14)
endfunction

function GetButtonIndexAnim takes integer btn returns integer
    return LoadInteger(udg_ButtonHash,btn,15)
endfunction

function SetButtonCustomValue takes integer btn, integer cv returns nothing
    call SaveInteger(udg_ButtonHash,btn,0,cv)
endfunction

function SetButtonCamera takes integer btn, integer cam returns nothing
    call SaveInteger(udg_ButtonHash,btn,1,cam)
endfunction

function SetButtonWidth takes integer btn, real w returns nothing
    call SaveReal(udg_ButtonHash,btn,2,w)
endfunction

function SetButtonHeight takes integer btn, real h returns nothing
    call SaveReal(udg_ButtonHash,btn,3,h)
endfunction

function SetButtonMinX takes integer btn, real minx returns nothing
    call SaveReal(udg_ButtonHash,btn,4,minx)
endfunction

function SetButtonMaxX takes integer btn, real maxx returns nothing
    call SaveReal(udg_ButtonHash,btn,5,maxx)
endfunction

function SetButtonMaxY takes integer btn, real maxy returns nothing
    call SaveReal(udg_ButtonHash,btn,6,maxy)
endfunction

function SetButtonMinY takes integer btn, real miny returns nothing
    call SaveReal(udg_ButtonHash,btn,7,miny)
endfunction

function SetButtonZ takes integer btn, real z returns nothing
    call SaveReal(udg_ButtonHash,btn,8,z)
endfunction

function SetButtonCenterX takes integer btn, real cx returns nothing
    call SaveReal(udg_ButtonHash,btn,9,cx)
endfunction

function SetButtonCenterY takes integer btn, real cy returns nothing
    call SaveReal(udg_ButtonHash,btn,10,cy)
endfunction

function SetButtonShow takes integer btn, boolean show returns nothing
    call SaveBoolean(udg_ButtonHash,btn,11,show)
endfunction

function SetButtonTrigLClick takes integer btn, trigger lcl returns nothing
    call SaveTriggerHandle(udg_ButtonHash,btn,12,lcl)
endfunction

function SetButtonTrigRClick takes integer btn, trigger rcl returns nothing
    call SaveTriggerHandle(udg_ButtonHash,btn,13,rcl)
endfunction

function SetButtonPicture takes integer btn, unit pict returns nothing
    call SaveUnitHandle(udg_ButtonHash,btn,14,pict)
endfunction

function SetButtonIndexAnim takes integer btn, integer ianim returns nothing
    call SaveInteger(udg_ButtonHash,btn,15,ianim)
endfunction


//=====================================================================

function CreateButton takes real minx, real maxy, real W, real H, real z, integer texture returns integer
    local integer i = LoadInteger(udg_ButtonHash,0,0) + 1
    local unit pic = CreateUnit(Player(15),udg_TypeUnit,0.,0.,0.)
    local destructable tree
    local integer animindex
    local real size
      
    call SetButtonCustomValue(i,0)
    call SetButtonCamera(i,0)
    call SetButtonWidth(i,W)
    call SetButtonHeight(i,H)
    call SetButtonMinX(i,minx)   
    call SetButtonMaxX(i,minx+W)
    call SetButtonMaxY(i,maxy)
    call SetButtonMinY(i,maxy-H)      
    call SetButtonZ(i,100.2+z)
    call SetButtonCenterX(i,minx+W/2.)   
    call SetButtonCenterY(i,maxy-H/2.)
    call SetButtonShow(i,false)
    call SetButtonTrigLClick(i,CreateTrigger())
    call SetButtonTrigRClick(i,CreateTrigger())
    call SetButtonPicture(i,pic)
    
    call UnitAddAbility(pic,TypeSkinChanger())
    if texture != 0 then
        set tree = CreateDestructable(texture,0.,0.,0.,0.,1)
        call IssueTargetOrder(pic,"grabtree",tree)
        call RemoveDestructable(tree)
        set tree = null
    endif
    
    set animindex = FineIndexAnimModel(W,H,GetButtonZ(i))    
    call SetButtonIndexAnim(i,animindex)
    call SetUnitAnimationByIndex(pic,animindex)
    set size = FineSizeModel(W,H,GetButtonZ(i))
    call SetUnitScale(pic,size,0.,0.)
    call UnitAddAbility(pic,'Aave')
    call UnitRemoveAbility(pic,'Aave')
    call ShowUnit(pic,false)
    call SetUnitUserData(pic,i)
        
    call SaveInteger(udg_ButtonHash,0,0,i)
    
    set picture = null
    return i
endfunction

function AddActionL takes integer btn, code func returns triggeraction
    return TriggerAddAction(GetButtonTrigLClick(btn),func)
endfunction
    
function RemoveActionL takes integer btn, triggeraction action returns nothing
    call TriggerRemoveAction(GetButtonTrigLClick(btn),action)
endfunction
    
function AddActionR takes integer btn, code func returns triggeraction
    return TriggerAddAction(GetButtonTrigRClick(btn),func)
endfunction
    
function RemoveActionR takes integer btn, triggeraction action returns nothing
    call TriggerRemoveAction(GetButtonTrigRClick(btn),action)
endfunction
    
function DeleteButton takes integer btn returns nothing
    call DestroyTrigger(GetButtonTrigLClick(btn))
    call DestroyTrigger(GetButtonTrigRClick(btn))
    call RemoveUnit(GetButtonPicture(btn))
endfunction
    
function UpdateButton takes integer btn returns nothing
    local integer cam = GetButtonCamera(btn)
    local real cx = GetButtonCenterX(btn)
    local real cy = GetButtonCenterY(btn)
    local real z = GetButtonZ(btn)
    local integer Pos = Win2World(cam,cx,cy,z)
    local real vx = GetVectorX(Pos)
    local real vy = GetVectorY(Pos)
    local real vz = GetVectorZ(Pos)
    local unit pic = GetButtonPicture(btn)
    
    call SetUnitX(pic,vx)
    call SetUnitY(pic,vy)
    call MoveLocation(udg_GL4DGUI,vx,vy)
    call SetUnitFlyHeight(pic,vz-GetLocationZ(udg_GL4DGUI),0.)
    
    set pic = null
endfunction
    
function ShowButton takes integer btn, boolean show, integer Cam returns nothing
    local unit pic = GetButtonPicture(btn)
    local integer indexanim = GetButtonIndexAnim(btn)
    if Cam != -1 then
        call SetButtonCamera(btn,Cam)
    endif
    call ShowUnit(pic,show)
    if show != GetButtonShow(btn) then
        if show then
            call UpdateButton(btn)
            call SetUnitAnimationByIndex(pic,indexanim)
        endif
    endif
    call SetButtonShow(i,show)
    set pic = null
endfunction
    
function IsButtonClick takes integer btn, unit u returns boolean
    return GetButtonPicture(btn) == u
endfunction
    
function IsButtonClickEx takes integer btn, real x, real y returns boolean
    local real minx = GetButtonMinX(btn)
    local real miny = GetButtonMinY(btn)
    local real maxx = GetButtonMaxX(btn)
    local real maxy = GetButtonMaxY(btn)
    return minx < x and x < maxx and miny < y and y < maxy
endfunction
    
function ButtonClickL takes integer btn returns nothing
    set udg_TriggerButton = btn
    call TriggerExecute(GetButtonTrigLClick(btn))
endfunction
    
function ButtonClickR takes integer btn returns nothing
    set udg_TriggerButton = btn
    call TriggerExecute(GetButtonTrigRClick(btn))
endfunction
    
function SetButtonPosition takes integer btn,real minx,real maxy returns nothing
    local real w = GetButtonWidth(btn)
    local real h = GetButtonHeight(btn)
    local boolean show = GetButtonShow(btn)
    
    call SetButtonMinX(btn,minx)
    call SetButtonMaxX(btn,minx+w)
    call SetButtonMaxY(btn,maxy)
    call SetButtonMinY(btn,maxy-h)
    call SetButtonCenterX(btn,minx+w/2.)
    call SetButtonCenterY(btn,maxy-h/2.)
    if show then
        call UpdateButton(btn)
    endif
endfunction
    
function SetButtonTexture takes integer btn,integer texture returns nothing
    local unit pic = GetButtonPicture(btn)
    local destructable tree = CreateDestructable(texture,0.,0.,0.,0.,1)
    local boolean show = GetButtonShow(btn)
    call ShowUnit(pic,true)
    call SetUnitX(pic,0.)
    call SetUnitY(pic,0.)
    call IssueTargetOrder(pic,"grabtree",tree)
    call ShowUnit(pic,show)
    call RemoveDestructable(tree)
    if show then
        call UpdateButton(btn)
    endif
    set tree = null
    set pic = null
endfunction
    
function UpdateAllButtons takes nothing returns nothing
    local integer i = LoadInteger(udg_ButtonHash,0,0)
    loop
        exitwhen i < 0
        if GetButtonShow(i) then
            call UpdateButton(i)
        endif
        set i = i - 1
    endloop
endfunction
    
function ClickButton takes unit u, boolean IsLeft returns boolean
    local integer b
    if GetUnitTypeId(u) == udg_TypeUnit then
        set b = GetUnitUserData(u)
        if b != 0 and GetButtonShow(b) then
            if IsLeft then
                call ButtonClickL(b)
            else
                call ButtonClickR(b)
            endif
            return true
        endif
    endif
    return false
endfunction
    
function ClickButtonEx takes real x,real y,boolean IsLeft returns boolean
    local integer i = LoadInteger(udg_ButtonHash,0,0)
    loop
        exitwhen i < 0
        if IsButtonClickEx(i,x,y) then
            if IsLeft then
                call ButtonClickL(i)
            else
                call ButtonClickR(i)
            endif
            return true
        endif
        set i = i - 1
    endloop
    return false
endfunction
    
function ClickButtonPeriodicSelect takes player p,boolean IsLeft returns boolean
    local integer i = LoadInteger(udg_ButtonHash,0,0)
    local unit pic
    loop
        exitwhen i < 0
        set pic = GetButtonPicture(i)
        if IsUnitSelected(pic,p) then
            if IsLeft then
                call ButtonClickL(i)
            else
                call ButtonClickR(i)
            endif
            return true
        endif
        set i = i - 1
    endloop
    return false
endfunction


function DGUIClickEx takes real x,real y,boolean IsLeft returns boolean
    local integer i = LoadInteger(udg_ButtonHash,0,0)
    loop
        exitwhen i < 0
        if IsButtonClickEx(i,x,y) then
            if IsLeft then
                call ButtonClickL(i)
            else
                call ButtonClickR(i)
            endif
            return true
        endif
        set i = i - 1
    endloop
    return false
endfunction

//=======================================================================

function GetPictureCustomValue takes integer pic returns integer
    return LoadInteger(udg_PictureHash,pic,0)
endfunction

function GetPictureCamera takes integer pic returns integer
    return LoadInteger(udg_PictureHash,pic,1)
endfunction

function GetPictureWidth takes integer pic returns real
    return LoadReal(udg_PictureHash,pic,2)
endfunction

function GetPictureHeight takes integer pic returns real
    return LoadReal(udg_PictureHash,pic,3)
endfunction

function GetPictureCenterX takes integer pic returns real
    return LoadReal(udg_PictureHash,pic,4)
endfunction

function GetPictureCenterY takes integer pic returns real
    return LoadReal(udg_PictureHash,pic,5)
endfunction

function GetPictureZ takes integer pic returns real
    return LoadReal(udg_PictureHash,pic,6)
endfunction

function GetPictureShow takes integer pic returns boolean
    return LoadBoolean(udg_PictureHash,pic,7)
endfunction

function GetPicturePic takes integer pic returns unit
    return LoadUnitHandle(udg_PictureHash,pic,8)
endfunction

function GetPictureIndexAnim takes integer pic returns integer
    return LoadInteger(udg_PictureHash,pic,9)
endfunction

function SetPictureCustomValue takes integer pic, integer cv returns nothing
    call SaveInteger(udg_PictureHash,pic,0,cv)
endfunction

function SetPictureCamera takes integer pic, integer cam returns nothing
    call SaveInteger(udg_PictureHash,pic,1,cam)
endfunction

function SetPictureWidth takes integer pic, real w returns nothing
    call SaveReal(udg_PictureHash,pic,2,w)
endfunction

function SetPictureHeight takes integer pic, real h returns nothing
    call SaveReal(udg_PictureHash,pic,3,h)
endfunction

function SetPictureCenterX takes integer pic, real cx returns nothing
    call SaveReal(udg_PictureHash,pic,4,cx)
endfunction

function SetPictureCenterY takes integer pic, real cy returns nothing
    call SaveReal(udg_PictureHash,pic,5,cy)
endfunction

function SetPictureZ takes integer pic, real z returns nothing
    call SaveReal(udg_PictureHash,pic,6,z)
endfunction

function SetPictureShow takes integer pic, boolean show returns nothing
    call SaveBoolean(udg_PictureHash,pic,7,show)
endfunction

function SetPicturePic takes integer pic, unit pict returns nothing
    call SaveUnitHandle(udg_PictureHash,pic,8,pict)
endfunction

function SetPictureIndexAnim takes integer pic, integer index returns nothing
    call SaveInteger(udg_PictureHash,pic,9,index)
endfunction

//=======================================================================
    
function CreatePicture takes real minx,real maxy,real W,real H,real z,integer texture returns integer
    local integer i = LoadInteger(udg_PictureHash,0,0)
    local unit pic = CreateUnit(Player(15),udg_TypeUnit,0.,0.,0.)
    local destructable tree
    local integer indexanim
    local real size
    
    call SetPictureCustomValue(i,0)
    call SetPictureCamera(i,0)
    call SetPictureWidth(i,W)
    call SetPictureHeight(i,H)
    call SetPictureCenterX(i,minx+W/2.)
    call SetPictureCenterY(i,maxy-H/2.)
    call SetPictureZ(i,100.2+z)
    call SetPictureShow(i,false)
    call SetPicturePic(i,pic)
    
    call UnitAddAbility(pic,TypeSkinChanger())
    
    if texture != 0 then
        set tree = CreateDestructable(texture,0.,0.,0.,0.,1)
        call IssueTargetOrder(pic,"grabtree",tree)
        call RemoveDestructable(tree)
        set tree = null
    endif
    
    set indexanim = FineIndexAnimModel(W,H,GetPictureZ(i))
    call SetPictureIndexAnim(i,indexanim)
    call SetUnitAnimationByIndex(pic,indexanim) 
    set size = FineSizeModel(W,H,GetPictureZ(i))
    call SetUnitScale(pic,size,0.,0.)
    call UnitAddAbility(pic,'Aave')
    call UnitRemoveAbility(pic,'Aave')
    call UnitAddAbility(pic,'Aloc')
    call UnitRemoveAbility(pic,'Aloc')
    call ShowUnit(pic,false)

    call SaveInteger(udg_PictureHash,0,0,i)
    
    set pic = null
    return i
endfunction
    
function DeletePicture takes integer pic returns nothing
    call RemoveUnit(GetPicturePic(pic))
endfunction
    
function UpdatePicture takes integer pic returns nothing
    local integer cam = GetPictureCamera(pic)
    local real cx = GetPictureCenterX(pic)
    local real cy = GetPictureCenterY(pic)
    local real z = GetPictureZ(pic)
    local integer Pos = Win2World(cam,cx,cy,z)
    local real vx = GetVectorX(Pos)
    local real vy = GetVectorY(Pos)
    local real vz = GetVectorZ(Pos)
    local unit pic = GetPicturePic(pic)
    
    call SetUnitX(pic,vx)
    call SetUnitY(pic,vy)
    call MoveLocation(udg_GL4DGUI,vx,vy)
    call SetUnitFlyHeight(pic,vz-GetLocationZ(udg_GL4DGUI),0.)
    
    set pic = null
endfunction
    
function ShowPicture takes integer pic, boolean show, integer Cam returns nothing
    local unit pict = GetPicturePic(pic)
    local integer indexanim = GetPictureIndexAnim(pic)
    if Cam != -1 then
        call SetPictureCamera(pic,Cam)
    endif
    call ShowUnit(pic,show)
    if show != GetPictureShow(pic) then
        if show then
            call UpdatePicture(pic)
            call SetUnitAnimationByIndex(pict,indexanim)
            call UnitAddAbility(pict,'Aloc')
            call UnitRemoveAbility(pict,'Aloc')
        endif
    endif
    call SetPictureShow(pic,show)
    set pict = null
endfunction
    
function SetPicturePosition takes integer pic,real minx,real maxy returns nothing
    local real w = GetPictureWidth(pic)
    local real h = GetPictureHeight(pic)
    local boolean show = GetPictureShow(pic)
    
    call SetPictureCenterX(pic,minx+w/2.)
    call SetPictureCenterY(pic,maxy-h/2.)

    if show then
        call UpdatePicture(pic)
    endif
endfunction
    
function SetPictureTexture takes integer pic, integer texture returns nothing
    local destructable tree = CreateDestructable(texture,0.,0.,0.,0.,1)
    local unit pict = GetPicturePic(pic)
    call ShowUnit(pict,true)
    call SetUnitX(pict,0.)
    call SetUnitY(pict,0.)
    call IssueTargetOrder(pict,"grabtree",tree)
    call ShowUnit(pict,GetPictureShow(pic))
    call RemoveDestructable(tree)
    if GetPictureShow(pic) then
        call UpdatePicture(pic)
    endif
    set tree = null
    set pict = null
endfunction
    
function UpdateAllPictures takes nothing returns nothing
    local integer i = LoadInteger(udg_PictureHash,0,0)
    loop
        exitwhen i < 0
        call UpdatePicture(i)
        set i = i - 1
    endloop
endfunction

//=======================================================================

function GetTextCustomValue takes integer text returns integer
    return LoadInteger(udg_TextHash,text,0)
endfunction

function GetTextCamera takes integer text returns integer
    return LoadInteger(udg_TextHash,text,1)
endfunction

function GetTextMinX takes integer text returns real
    return LoadReal(udg_TextHash,text,2)
endfunction

function GetTextMaxY takes integer text returns real
    return LoadReal(udg_TextHash,text,3)
endfunction

function GetTextZ takes integer text returns real
    return LoadReal(udg_TextHash,text,4)
endfunction

function GetTextShow takes integer text returns boolean
    return LoadBoolean(udg_TextHash,text,5)
endfunction

function GetTextText takes integer text returns texttag
    return LoadTextTagHandle(udg_TextHash,text,6)
endfunction

function SetTextCustomValue takes integer text, integer cv returns nothing
    call SaveInteger(udg_TextHash,text,0,cv)
endfunction

function SetTextCamera takes integer text, integer cam returns nothing
    call SaveInteger(udg_TextHash,text,1,cam)
endfunction

function SetTextMinX takes integer text, real minx returns nothing
    call SaveReal(udg_TextHash,text,2,minx)
endfunction

function SetTextMaxY takes integer text, real maxy returns nothing
    call SaveReal(udg_TextHash,text,3,maxy)
endfunction

function SetTextZ takes integer text, real z returns nothing
    call SaveReal(udg_TextHash,text,4,z)
endfunction

function SetTextShow takes integer text, boolean show returns nothing
    call SaveBoolean(udg_TextHash,text,5,show)
endfunction

function SetTextText takes integer text, texttag txt returns nothing
    call SaveTextTagHandle(udg_TextHash,text,6,txt)
endfunction

//======================================================================= 
    
function CreateText takes real minx,real maxy,real z returns integer
    local integer i = LoadInteger(udg_TextHash,0,0)
    
    call SetTextCustomValue(i,0)
    call SetTextCamera(i,0)
    call SetTextMinX(i,minx)
    call SetTextMaxY(i,maxy)
    call SetTextZ(i,100.+z)
    call SetTextShow(i,false)
    call SetTextText(i,CreateTextTag())
    call SetTextTagVisibility(GetTextText(i),false)
    
    call SaveInteger(udg_TextHash,0,0,i)
    return i
endfunction
    
function DeleteText takes integer text returns nothing
    call DestroyTextTag(GetTextText(text))
endfunction
    
function UpdateText takes integer text returns nothing
    local integer cam = GetTextCamera(text)
    local real minx = GetTextMinX(text)
    local real maxy = GetTextMaxY(text)
    local real z = GetTextZ(text)
    local integer Pos = Win2World(cam,minx,maxy,z)
    local real vx = GetVectorX(Pos)
    local real vy = GetVectorY(Pos)
    local real vz = GetVectorZ(Pos)
    call SetTextTagPos(GetTextText(text),vx,vy,vz-GetZ4DGUI(vx,vy))
endfunction
    
function SetTextPosition takes integer text,real minx,real maxy returns nothing
    call SetTextMinX(text,minx)
    call SetTextMaxY(text,maxy)
    if GetTextShow(text) then
        call UpdateText(text)
    endif
endfunction
    
function ShowText takes integer text,boolean show,integer Cam returns nothing
    if Cam != -1 then
        call SetTextCamera(text,Cam)
    endif
    call SetTextTagVisibility(GetTextText(text),show)
    if show != GetTextShow(text) then
        if show then
            call UpdateText(text)
        endif
    endif
    call SetTextShow(text,show)
endfunction
    
function UpdateAllTexts takes nothing returns nothing
    local integer i = LoadInteger(udg_TextHash,0,0)
    loop
        exitwhen i < 0
        call UpdateText(i)
        set i = i - 1
    endloop
endfunction

function DGUIUpdate takes boolean but,boolean pic,boolean tex returns nothing
    if but then
        call UpdateAllButtons()
    endif
    if pic then
        call UpdateAllPictures()
    endif
    if tex then
        call UpdateAllTexts()
    endif
endfunction

//library DGUI ends

Why World Editor crashes when saving this as a custom code?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      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