| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- /* IF 分支节点样式 - 自定义布局 */
- .Blueprint-if-node {
- min-width: 200px;
- min-height: 120px;
- background: linear-gradient(180deg, #3d3d40 0%, #2a2a2d 100%);
- border: 1px solid rgba(255, 255, 255, 0.15);
- border-radius: 12px;
- box-shadow:
- 0 1px 0 0 rgba(255, 255, 255, 0.2) inset,
- 0 4px 12px rgba(0, 0, 0, 0.5),
- 0 0 20px rgba(156, 39, 176, 0.3);
- display: flex;
- flex-direction: column;
- position: relative;
- overflow: visible;
- }
- .Blueprint-if-node.selected {
- border-color: rgba(255, 165, 0, 0.6);
- box-shadow:
- 0 1px 0 0 rgba(255, 255, 255, 0.2) inset,
- 0 0 0 2px rgba(255, 165, 0, 0.4),
- 0 4px 12px rgba(0, 0, 0, 0.5),
- 0 0 20px rgba(255, 165, 0, 0.4);
- }
- /* 内部发光效果 */
- .Blueprint-if-node::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: radial-gradient(circle at 20% 50%, rgba(156, 39, 176, 0.2) 0%, transparent 60%);
- border-radius: 12px;
- pointer-events: none;
- }
- /* 顶部光泽效果(类似图像中的光泽头部) */
- .Blueprint-if-node-header {
- background: linear-gradient(180deg, rgba(156, 39, 176, 0.3) 0%, rgba(156, 39, 176, 0.1) 50%, transparent 100%);
- color: #fff;
- padding: 8px 16px;
- font-size: 13px;
- font-weight: 600;
- text-align: left;
- letter-spacing: 0.5px;
- position: relative;
- z-index: 1;
- border-radius: 12px 12px 0 0;
- }
- /* 自定义布局容器 - 使用 flex */
- .Blueprint-if-node-body {
- position: relative;
- flex: 1;
- display: flex;
- flex-direction: column;
- padding: 12px 16px;
- z-index: 1;
- min-height: 100px;
- justify-content: space-between;
- }
- /* 第一行:执行输入和 True 输出 */
- .Blueprint-if-node-top-row {
- display: flex;
- justify-content: space-between;
- align-items: flex-start;
- min-height: 30px;
- }
- /* 第二行:条件输入区域 */
- .Blueprint-if-node-middle-row {
- display: flex;
- align-items: center;
- flex: 1;
- padding: 8px 0;
- }
- /* 第三行:False 输出 */
- .Blueprint-if-node-bottom-row {
- display: flex;
- justify-content: flex-end;
- align-items: flex-end;
- min-height: 30px;
- }
- /* 左上:执行输入 */
- .Blueprint-if-node-execution-input {
- display: flex;
- align-items: flex-start;
- justify-content: flex-start;
- }
- .Blueprint-if-node-execution-input .Blueprint-node-port {
- position: relative;
- left: 0;
- }
- /* 右上:true 输出 */
- .Blueprint-if-node-true-output {
- display: flex;
- align-items: flex-start;
- justify-content: flex-end;
- }
- .Blueprint-if-node-true-output .Blueprint-node-port {
- position: relative;
- right: 0;
- }
- /* 左中:条件输入 */
- .Blueprint-if-node-condition {
- display: flex;
- align-items: center;
- width: 100%;
- }
- /* 空条件提示 */
- .Blueprint-if-condition-empty {
- color: #888;
- font-size: 11px;
- font-style: italic;
- }
- /* 右下:false 输出 */
- .Blueprint-if-node-false-output {
- display: flex;
- align-items: flex-end;
- justify-content: flex-end;
- }
- .Blueprint-if-node-false-output .Blueprint-node-port {
- position: relative;
- right: 0;
- }
- /* 条件端口样式:让 bool 类型使用红色 */
- .Blueprint-if-node .Blueprint-node-port.port-bool .Blueprint-node-port-dot {
- background: #f44336;
- border: none;
- width: 12px;
- height: 12px;
- border-radius: 50%;
- box-shadow: 0 0 6px rgba(244, 67, 54, 0.5);
- }
- .Blueprint-if-node .Blueprint-node-port.port-bool.connected .Blueprint-node-port-dot {
- background: #ef5350;
- box-shadow: 0 0 10px rgba(244, 67, 54, 0.7);
- }
- /* 条件标签样式 */
- .Blueprint-if-node .Blueprint-node-port[data-port-type="data"] .Blueprint-node-port-label {
- color: #e0e0e0;
- font-size: 12px;
- font-weight: 500;
- margin-left: 6px;
- }
- /* true/false 输出端口标签样式 */
- .Blueprint-if-node .Blueprint-node-port.output.port-execution .Blueprint-node-port-label {
- color: #ffffff !important;
- font-size: 12px;
- font-weight: 600;
- margin-right: 6px;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
- display: inline-block;
- opacity: 1;
- visibility: visible;
- }
- /* 执行端口箭头样式 */
- .Blueprint-if-node .Blueprint-node-port-arrow {
- filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.3));
- }
- /* 确保端口可见且可交互 */
- .Blueprint-if-node .Blueprint-node-port {
- pointer-events: auto;
- position: relative;
- display: flex;
- align-items: center;
- gap: 4px;
- z-index: 2;
- }
- .Blueprint-if-node .Blueprint-node-port.output {
- flex-direction: row;
- }
- .Blueprint-if-node .Blueprint-node-port.input {
- flex-direction: row;
- }
|