Beispiel #1
0
 protected bool FindPlace(Property.Room roomProp, out IntVector3 position, out IntVector3 entry)
 {
     foreach (Room room in dicRoomList.Values)
     {
         if (room.ConnectorList != null)
         {
             foreach (Connector conn in room.ConnectorList)
             {
                 if (conn.otherConnector == null && !conn.connectorProp.IsDynamic)
                 {
                     Property.ConnectorSocket connSocket = conn.socket as Property.ConnectorSocket;
                     if (connSocket.socketType == Property.ConnectorSocket.TYPE.TYPE_RELATIVE)
                     {
                         position = conn.ConnectToPos;
                         if (roomProp.CanPlaceAt(position))
                         {
                             entry = conn.LogicPosition;
                             return(true);
                         }
                     }
                 }
             }
         }
     }
     position = entry = IntVector3.Zero;
     return(false);
 }
Beispiel #2
0
        public Rotation2D FaceTo(IntVector3 entry /*relative position*/)
        {
            Rotation2D rot = TurnRot(entry, false);

            if (ConnectorList != null)
            {
                foreach (Connector conn in ConnectorList)
                {
                    ConnectorSocket socket = conn.socket as ConnectorSocket;
                    if (socket.socketType == ConnectorSocket.TYPE.TYPE_RELATIVE && conn.Enterable())
                    {
                        rot *= TurnRot(socket.ConnectPos, true);
                        return(rot);
                    }
                }
            }
            return(Rotation2D.Identity);
        }