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); }
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); }