Example #1
0
        public Node(Tile a_tile)
        {
            x = a_tile.x;
            y = a_tile.y;

            //if the tile is blocked
            if (a_tile.m_type == Tile.Tiletype.Blocked)
            {
                m_type = Nodetype.Blocked;//block the node
            }
        }
Example #2
0
        /// <summary>
        /// gets the closest vehicle node of the desired type,
        /// optionally returning the next pos on sidewalk instead of the node pos.
        /// All credit goes to Eddlm!
        /// </summary>
        /// <param name="desiredPos"></param>
        /// <param name="roadtype"></param>
        /// <param name="sidewalk"></param>
        /// <returns></returns>
        public static Vector3 GenerateSpawnPos(Vector3 desiredPos, Nodetype roadtype, bool sidewalk)
        {
            Vector3        finalpos      = Vector3.Zero;
            bool           forceOffroad  = false;
            OutputArgument outArgA       = new OutputArgument();
            int            nodeNumber    = 1;
            int            roadTypeAsInt = 0;

            switch (roadtype)
            {
            case Nodetype.Offroad:
                roadTypeAsInt = 1;
                forceOffroad  = true;
                break;

            default:
                roadTypeAsInt = (int)roadtype;
                break;
            }

            int nodeID = Function.Call <int>(
                Hash.GET_NTH_CLOSEST_VEHICLE_NODE_ID, desiredPos.X, desiredPos.Y, desiredPos.Z,
                nodeNumber, roadTypeAsInt, 300f, 300f);

            if (forceOffroad)
            {
                while (!Function.Call <bool>(Hash._GET_IS_SLOW_ROAD_FLAG, nodeID) && nodeNumber < 500)
                {
                    nodeNumber++;
                    nodeID = Function.Call <int>(Hash.GET_NTH_CLOSEST_VEHICLE_NODE_ID,
                                                 desiredPos.X, desiredPos.Y, desiredPos.Z, nodeNumber, roadTypeAsInt, 300f, 300f);
                }
            }

            Function.Call(Hash.GET_VEHICLE_NODE_POSITION, nodeID, outArgA);
            finalpos = outArgA.GetResult <Vector3>();
            if (sidewalk)
            {
                finalpos = World.GetNextPositionOnSidewalk(finalpos);
            }

            return(finalpos);
        }
        public override void update()
        {
            // Add Regulatory List and Chemical to the add layout of RegulatoryListMember
            CswNbtMetaDataObjectClass RegListMemberOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RegulatoryListMemberClass );
            foreach( CswNbtMetaDataNodeType RegListMemberNT in RegListMemberOC.getNodeTypes() )
            {
                foreach( CswNbtMetaDataNodeTypeProp PropNTP in RegListMemberNT.getNodeTypeProps().Where( p => Int32.MinValue != p.ObjectClassPropId ) )
                {
                    switch( PropNTP.getObjectClassPropName() )
                    {
                        case CswNbtObjClassRegulatoryListMember.PropertyName.RegulatoryList:
                            PropNTP.updateLayout( CswEnumNbtLayoutType.Add, true, DisplayRow: 1, DisplayColumn: 1 );
                            break;
                        case CswNbtObjClassRegulatoryListMember.PropertyName.Chemical:
                            PropNTP.updateLayout( CswEnumNbtLayoutType.Add, true, DisplayRow: 2, DisplayColumn: 1 );
                            break;
                    }
                }
            }

            // Remove ability to add Regulatory List Members from Chemicals tab on Regulatory List
            CswNbtMetaDataObjectClass RegListMemOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RegulatoryListMemberClass );
            CswNbtMetaDataObjectClass RegListOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RegulatoryListClass );
            foreach( CswNbtMetaDataNodeType Nodetype in RegListOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp ChemicalsNTP = Nodetype.getNodeTypePropByObjectClassProp( CswNbtObjClassRegulatoryList.PropertyName.Chemicals );
                CswNbtView ChemicalsView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalsNTP.ViewId );
                CswNbtViewRoot.forEachRelationship EachRelationship = delegate( CswNbtViewRelationship Relationship )
                {
                    if( Relationship.SecondId == RegListMemOC.ObjectClassId )
                    {
                        Relationship.AllowAdd = false;
                    }
                };
                ChemicalsView.Root.eachRelationship( EachRelationship, null );
                ChemicalsView.save();
            }

        } // update()
Example #4
0
 public Node(int a_x, int a_y, Nodetype a_type)
 {
     x      = a_x;
     y      = a_y;
     m_type = a_type;
 }