
            /**
            IMPORTANT !!!
       
            DO NOT EDIT THIS FILE. IT IS GENERATED FROM approriate xml file in xmlresources/gbinfomessages BY
            THE JavaClassesGenerator.xslt. MODIFY THESE FILES INSTEAD OF THIS ONE.
       
            IMPORTANT END !!!
            */
            package
            cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
	    		import java.util.*;    
    import javax.vecmath.*;    
    import cz.cuni.amis.pogamut.base.communication.messages.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.objects.*;    
    import cz.cuni.amis.pogamut.base.communication.translator.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;    
    import cz.cuni.amis.pogamut.base.exceptions.*;    
    import cz.cuni.amis.pogamut.base3d.worldview.objects.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.*;    
    import cz.cuni.amis.pogamut.ut2004.agent.worldview.objects.*;    
                
            
            /**
              
		Info batch message. Start with SNGP, ends with ENGP. Sent for
		each INAV message at the beginning of the communication. Holds
		information about NavPoint neighbours. This way the reachability
		graph can be exported from UT2004. You should interpret this as
		a DIRECTED EDGE of the navpoint GRAPH that describes the the edge
		from FromNavPoint to ToNavPoint.
	
                          Corresponding GameBots message is 
                          INGP.
                      
             */
            
            public class
            NavPointNeighbourLink extends
        InfoMessage
	            	implements IWorldEvent
                        
            {
            
            
            
    	/** Example how the message looks like - used during parser tests. */
    	public static final String PROTOTYPE = 
    		"INGP {Id unreal_id} {Flags 0} {CollisionR 0} {CollisionH 0} {TranslocZOffset 0} {TranslocTargetTag text} {OnlyTranslocator False} {ForceDoubleJump False} {NeededJump 0,0,0} {NeverImpactJump False} {NoLowGrav False} {CalculatedGravityZ 0}";
    
            
            /////// Properties BEGIN
            
        /**
        
			Unique Id of the NavPoint the link is leading to (end of the link). Always identical to ToNavPoint.getId().
		 */
        protected
         UnrealId Id = 
        	null;
        
        
        /**
        
			Unique Id of the NavPoint the link is leading to (end of the link). Always identical to ToNavPoint.getId().
		 */
        public
        UnrealId getId() {
            return
         Id;
        }
        

        
        /**
        
			Holds information about the path from the NavPoint to its
			neighbour that is represented by this message. TODO: see
			reachspecs on UnrealWiki.
		 */
        protected
         int Flags = 
        	0;
        
        
        /**
        
			Holds information about the path from the NavPoint to its
			neighbour that is represented by this message. TODO: see
			reachspecs on UnrealWiki.
		 */
        public
        int getFlags() {
            return
         Flags;
        }
        

        
        /**
        
			Maximum collision radius of the path between navigation
			points. Bot bigger then this cannot use this path.
		 */
        protected
         int CollisionR = 
        	0;
        
        
        /**
        
			Maximum collision radius of the path between navigation
			points. Bot bigger then this cannot use this path.
		 */
        public
        int getCollisionR() {
            return
         CollisionR;
        }
        

        
        /**
        
			Maximum collision height of the path between navigation
			points. Bot bigger then this cannot use this path.
		 */
        protected
         int CollisionH = 
        	0;
        
        
        /**
        
			Maximum collision height of the path between navigation
			points. Bot bigger then this cannot use this path.
		 */
        public
        int getCollisionH() {
            return
         CollisionH;
        }
        

        
        /**
        
	       TODO: mystery - we haven't figure it out so far.
	       Can be:
	       a) z-coord of the translocator target
	       b) translocator z-force for the translocator shot
	    */
        protected
         double TranslocZOffset = 
        	0;
        
        
        /**
        
	       TODO: mystery - we haven't figure it out so far.
	       Can be:
	       a) z-coord of the translocator target
	       b) translocator z-force for the translocator shot
	    */
        public
        double getTranslocZOffset() {
            return
         TranslocZOffset;
        }
        

        
        /**
        
           TODO: mystery - we haven't figure it out so far.
           Can be: where you should appear when successfully translocated or where to aim at
        */
        protected
         String TranslocTargetTag = 
        	null;
        
        
        /**
        
           TODO: mystery - we haven't figure it out so far.
           Can be: where you should appear when successfully translocated or where to aim at
        */
        public
        String getTranslocTargetTag() {
            return
         TranslocTargetTag;
        }
        

        
        /**
        
           Whether the translocator is the only way how to traverse this navigation edge.
        */
        protected
         boolean OnlyTranslocator = 
        	false;
        
        
        /**
        
           Whether the translocator is the only way how to traverse this navigation edge.
        */
        public
        boolean isOnlyTranslocator() {
            return
         OnlyTranslocator;
        }
        

        
        /**
        
           Whether you need to double jump to get to the neighbour navpoint.
        */
        protected
         boolean ForceDoubleJump = 
        	false;
        
        
        /**
        
           Whether you need to double jump to get to the neighbour navpoint.
        */
        public
        boolean isForceDoubleJump() {
            return
         ForceDoubleJump;
        }
        

        
        /**
        
           TODO: mystery how to interpret
        */
        protected
         Vector3d NeededJump = 
        	null;
        
        
        /**
        
           TODO: mystery how to interpret
        */
        public
        Vector3d getNeededJump() {
            return
         NeededJump;
        }
        

        
        /**
        
           TODO: mystery how to interpret
        */
        protected
         boolean NeverImpactJump = 
        	false;
        
        
        /**
        
           TODO: mystery how to interpret
        */
        public
        boolean isNeverImpactJump() {
            return
         NeverImpactJump;
        }
        

        
        /**
        
           TODO: mystery how to interpret
        */
        protected
         boolean NoLowGrav = 
        	false;
        
        
        /**
        
           TODO: mystery how to interpret
        */
        public
        boolean isNoLowGrav() {
            return
         NoLowGrav;
        }
        

        
        /**
        
           TODO: mystery how to interpret
        */
        protected
         double CalculatedGravityZ = 
        	0;
        
        
        /**
        
           TODO: mystery how to interpret
        */
        public
        double getCalculatedGravityZ() {
            return
         CalculatedGravityZ;
        }
        

        
        /**
        
			Start of the link (edge), where the link originates.
		 */
        protected
         NavPoint FromNavPoint = 
        	null;
        
        
        /**
        
			Start of the link (edge), where the link originates.
		 */
        public
        NavPoint getFromNavPoint() {
            return
         FromNavPoint;
        }
        

        
        /**
        
            End of the link (edge), where the link ends.
         */
        protected
         NavPoint ToNavPoint = 
        	null;
        
        
        /**
        
            End of the link (edge), where the link ends.
         */
        public
        NavPoint getToNavPoint() {
            return
         ToNavPoint;
        }
        

        
            /////// Properties END
            
            /////// Extra Java code BEGIN
                        	
            	/////// Additional code from xslt BEGIN            	 
            			
            		
            		
            	/////// Additional code from xslt END            
				                    
	            /////// Extra Java from XML BEGIN
            		
                /**
                 * Use to fill missing fields of the Item when creating MapObtained event before
                 * INIT command is requested.
                 */ 
                public NavPointNeighbourLink(
                  NavPointNeighbourLink orig, 
                  NavPoint from,
                  NavPoint to
                ) {
                    this(orig);
                    this.FromNavPoint = from;
                    this.ToNavPoint = to;
                }   
			
            	/////// Extra Java from XML END
            	    
            /////// Extra Java code END
            
            
            
            /**
              * Cloning constructor.
              */
             public NavPointNeighbourLink(NavPointNeighbourLink original) {
                
                     this.Id=original.Id;
                
                     this.Flags=original.Flags;
                
                     this.CollisionR=original.CollisionR;
                
                     this.CollisionH=original.CollisionH;
                
                     this.TranslocZOffset=original.TranslocZOffset;
                
                     this.TranslocTargetTag=original.TranslocTargetTag;
                
                     this.OnlyTranslocator=original.OnlyTranslocator;
                
                     this.ForceDoubleJump=original.ForceDoubleJump;
                
                     this.NeededJump=original.NeededJump;
                
                     this.NeverImpactJump=original.NeverImpactJump;
                
                     this.NoLowGrav=original.NoLowGrav;
                
                     this.CalculatedGravityZ=original.CalculatedGravityZ;
                
                     this.FromNavPoint=original.FromNavPoint;
                
                     this.ToNavPoint=original.ToNavPoint;
                
             }   
             
             
                 /**
                  * Used by Yylex to create empty message then to fill it's protected fields (Yylex is in the same package).
                  */
	             public NavPointNeighbourLink() {
	             }
             
                
                 
            public String toString() {
                return
                
                		super.toString() + " | " +
                		
				               "Id = " + 
				               String.valueOf(Id) + " | " +
				            
				               "Flags = " + 
				               String.valueOf(Flags) + " | " +
				            
				               "CollisionR = " + 
				               String.valueOf(CollisionR) + " | " +
				            
				               "CollisionH = " + 
				               String.valueOf(CollisionH) + " | " +
				            
				               "TranslocZOffset = " + 
				               String.valueOf(TranslocZOffset) + " | " +
				            
				               "TranslocTargetTag = " + 
				               String.valueOf(TranslocTargetTag) + " | " +
				            
				               "OnlyTranslocator = " + 
				               String.valueOf(OnlyTranslocator) + " | " +
				            
				               "ForceDoubleJump = " + 
				               String.valueOf(ForceDoubleJump) + " | " +
				            
				               "NeededJump = " + 
				               String.valueOf(NeededJump) + " | " +
				            
				               "NeverImpactJump = " + 
				               String.valueOf(NeverImpactJump) + " | " +
				            
				               "NoLowGrav = " + 
				               String.valueOf(NoLowGrav) + " | " +
				            
				               "CalculatedGravityZ = " + 
				               String.valueOf(CalculatedGravityZ) + " | " +
				             "";
                	 
             }
             
             public String toHtmlString() {
                return super.toString() +
             
            "<b>Id</b> : " + 
            String.valueOf(Id) + 
            " <br/> " +
             
            "<b>Flags</b> : " + 
            String.valueOf(Flags) + 
            " <br/> " +
             
            "<b>CollisionR</b> : " + 
            String.valueOf(CollisionR) + 
            " <br/> " +
             
            "<b>CollisionH</b> : " + 
            String.valueOf(CollisionH) + 
            " <br/> " +
             
            "<b>TranslocZOffset</b> : " + 
            String.valueOf(TranslocZOffset) + 
            " <br/> " +
             
            "<b>TranslocTargetTag</b> : " + 
            String.valueOf(TranslocTargetTag) + 
            " <br/> " +
             
            "<b>OnlyTranslocator</b> : " + 
            String.valueOf(OnlyTranslocator) + 
            " <br/> " +
             
            "<b>ForceDoubleJump</b> : " + 
            String.valueOf(ForceDoubleJump) + 
            " <br/> " +
             
            "<b>NeededJump</b> : " + 
            String.valueOf(NeededJump) + 
            " <br/> " +
             
            "<b>NeverImpactJump</b> : " + 
            String.valueOf(NeverImpactJump) + 
            " <br/> " +
             
            "<b>NoLowGrav</b> : " + 
            String.valueOf(NoLowGrav) + 
            " <br/> " +
             
            "<b>CalculatedGravityZ</b> : " + 
            String.valueOf(CalculatedGravityZ) + 
            " <br/> " +
             
            "<b>FromNavPoint</b> : " + 
            String.valueOf(FromNavPoint) + 
            " <br/> " +
             
            "<b>ToNavPoint</b> : " + 
            String.valueOf(ToNavPoint) + 
            " <br/> " +
             "";
             }            
             
             
             
             }
                         
        