Axiom.SceneManagers.PortalConnected.PCZone.AddPortal C# (CSharp) Метод

AddPortal() публичный абстрактный Метод

public abstract AddPortal ( Portal portal ) : void
portal Portal
Результат void
		public abstract void AddPortal( Portal portal );

Usage Example

Пример #1
0
		// Create portals for every door
		public void createPortals( SceneManager scene,
									   Entity room,
									   SceneNode roomNode,
									   PCZone zone,
									   short doorFlags,
									   bool isEnclosure )
		{
			string portalName;
			Vector3[] corners = new Vector3[ 4 ];

			if ( isEnclosure )
			{
				if ( ( doorFlags & (short)RoomDoors.DOOR_FRONT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 8 ];
					corners[ 1 ] = points[ 9 ];
					corners[ 2 ] = points[ 10 ];
					corners[ 3 ] = points[ 11 ];
					// create the portal
					portalName = room.Name + ( "_FrontDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_BACK ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 15 ];
					corners[ 1 ] = points[ 14 ];
					corners[ 2 ] = points[ 13 ];
					corners[ 3 ] = points[ 12 ];
					// create the portal
					portalName = room.Name + ( "_BackDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_TOP ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 16 ];
					corners[ 1 ] = points[ 17 ];
					corners[ 2 ] = points[ 18 ];
					corners[ 3 ] = points[ 19 ];
					// create the portal
					portalName = room.Name + ( "_TopDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_BOT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 23 ];
					corners[ 1 ] = points[ 22 ];
					corners[ 2 ] = points[ 21 ];
					corners[ 3 ] = points[ 20 ];
					// create the portal
					portalName = room.Name + ( "_BottomDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_LEFT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 27 ];
					corners[ 1 ] = points[ 26 ];
					corners[ 2 ] = points[ 25 ];
					corners[ 3 ] = points[ 24 ];
					// create the portal
					portalName = room.Name + ( "_LeftDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_RIGHT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 28 ];
					corners[ 1 ] = points[ 29 ];
					corners[ 2 ] = points[ 30 ];
					corners[ 3 ] = points[ 31 ];
					// create the portal
					portalName = room.Name + ( "_RightDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
			}
			else
			{
				if ( ( doorFlags & (short)RoomDoors.DOOR_FRONT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 11 ];
					corners[ 1 ] = points[ 10 ];
					corners[ 2 ] = points[ 9 ];
					corners[ 3 ] = points[ 8 ];
					// create the portal
					portalName = room.Name + ( "_FrontDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_BACK ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 12 ];
					corners[ 1 ] = points[ 13 ];
					corners[ 2 ] = points[ 14 ];
					corners[ 3 ] = points[ 15 ];
					// create the portal
					portalName = room.Name + ( "_BackDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_TOP ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 19 ];
					corners[ 1 ] = points[ 18 ];
					corners[ 2 ] = points[ 17 ];
					corners[ 3 ] = points[ 16 ];
					// create the portal
					portalName = room.Name + ( "_TopDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_BOT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 20 ];
					corners[ 1 ] = points[ 21 ];
					corners[ 2 ] = points[ 22 ];
					corners[ 3 ] = points[ 23 ];
					// create the portal
					portalName = room.Name + ( "_BottomDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_LEFT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 24 ];
					corners[ 1 ] = points[ 25 ];
					corners[ 2 ] = points[ 26 ];
					corners[ 3 ] = points[ 27 ];
					// create the portal
					portalName = room.Name + ( "_LeftDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
				if ( ( doorFlags & (short)RoomDoors.DOOR_RIGHT ) != 0 )
				{
					// set the corners to the front door corners
					corners[ 0 ] = points[ 31 ];
					corners[ 1 ] = points[ 30 ];
					corners[ 2 ] = points[ 29 ];
					corners[ 3 ] = points[ 28 ];
					// create the portal
					portalName = room.Name + ( "_RightDoorPortal" );
					Portal p = ( (PCZSceneManager)scene ).CreatePortal( portalName, PORTAL_TYPE.PORTAL_TYPE_QUAD );
					p.setCorners( corners );
					// associate the portal with the roomnode
					p.setNode( roomNode );
					// add the portal to the zone
					zone.AddPortal( p );
					// update derived values for the portal
					p.updateDerivedValues();
				}
			}
		}