(shape: Shape3D)
| 1619 | } |
| 1620 | } |
| 1621 | _ => {} |
| 1622 | } |
| 1623 | false |
| 1624 | } |
| 1625 | |
| 1626 | fn scene_value_color(value: &SceneValue) -> Option<Color> { |
| 1627 | let SceneValue::Vec4 { x, y, z, w } = value else { |
| 1628 | return None; |
| 1629 | }; |
| 1630 | Some(Color::new(*x, *y, *z, *w)) |
| 1631 | } |
| 1632 | |
| 1633 | pub fn sync_preview_doc_field_for_key<API: ScriptAPI + ?Sized>( |
| 1634 | ctx: &mut ScriptContext<'_, API>, |
| 1635 | key: u32, |
| 1636 | field: &str, |
| 1637 | ) -> bool { |
| 1638 | let value = with_state!(ctx.run, EditorState, ctx.id, |state| { |
| 1639 | cached_scene_node(&state.doc_text, key) |
| 1640 | .as_ref() |
| 1641 | .and_then(|node| scene_field(&node.data, field)) |
| 1642 | }).unwrap_or_default(); |
| 1643 | let Some(value) = value else { |
| 1644 | return false; |
| 1645 | }; |
| 1646 | sync_preview_field_for_key(ctx, key, field, &value) |
| 1647 | } |
| 1648 | |
| 1649 | pub fn sync_selected_preview_doc_fields<API: ScriptAPI + ?Sized>( |
| 1650 | ctx: &mut ScriptContext<'_, API>, |
| 1651 | fields: &[&str], |
| 1652 | ) -> bool { |
| 1653 | let Some(key) = with_state!(ctx.run, EditorState, ctx.id, |state| state.selected_key).unwrap_or_default() else { |
| 1654 | return false; |
| 1655 | }; |
| 1656 | let mut synced = true; |
| 1657 | for field in fields { |
| 1658 | synced &= sync_preview_doc_field_for_key(ctx, key, field); |
| 1659 | } |
| 1660 | synced |
| 1661 | } |
| 1662 | |
| 1663 | fn scene_value_bitmask_from_value(value: &SceneValue) -> Option<BitMask> { |
| 1664 | match value { |
| 1665 | SceneValue::I32(value) => Some(BitMask::from_bits(*value as u32)), |
| 1666 | SceneValue::Key(value) => { |
| 1667 | crate::scripts::ui::editor_inspector_values::parse_bitmask_scene_text_public( |
| 1668 | value.as_ref(), |
| 1669 | ) |
| 1670 | .map(BitMask::from_bits) |
no test coverage detected