Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
Visual script for new studio (#10320)
Browse files Browse the repository at this point in the history
* visual script partial completion

* add License

* remove unnecessary variable class name

* rounded nodes

* consistent modal styling

* update node categories and colors

* change side panel to node editor

* fix primitive errors

* remove inline styling

* makescene image container with fixed height

* define variable nodes category

* useable node collapse

* colappsed node handles

* pass checks

* add visual script panel

* advanced node picker

* improve scroll

* fix margins

* add conditional to paginated list

* rename variable node id
  • Loading branch information
SYBIOTE authored Jun 12, 2024
1 parent 4dc17aa commit 731a6a0
Show file tree
Hide file tree
Showing 60 changed files with 2,171 additions and 139 deletions.
4 changes: 3 additions & 1 deletion packages/editor/src/components/Editor2Container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ import { MaterialsPanelTab } from '@etherealengine/ui/src/components/editor/pane
import { PropertiesPanelTab } from '@etherealengine/ui/src/components/editor/panels/Properties'
import { ScenePanelTab } from '@etherealengine/ui/src/components/editor/panels/Scenes'
import { ViewportPanelTab } from '@etherealengine/ui/src/components/editor/panels/Viewport'
import { VisualScriptPanelTab } from '@etherealengine/ui/src/components/editor/panels/VisualScript'

import { EditorProgressBar } from '@etherealengine/ui/src/components/editor/util/EditorProgressBar'
import ErrorDialog from '@etherealengine/ui/src/components/tailwind/ErrorDialog'
import PopupMenu from '@etherealengine/ui/src/primitives/tailwind/PopupMenu'
Expand Down Expand Up @@ -93,7 +95,7 @@ const defaultLayout: LayoutData = {
tabs: [ViewportPanelTab]
},
{
tabs: [ScenePanelTab, FilesPanelTab, AssetsPanelTab]
tabs: [ScenePanelTab, FilesPanelTab, AssetsPanelTab, VisualScriptPanelTab]
}
]
},
Expand Down
15 changes: 5 additions & 10 deletions packages/editor/src/components/visualScript/VisualFlow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ import { VisualScriptState } from '@etherealengine/visual-script'

import 'reactflow/dist/style.css'

import Button from '@etherealengine/ui/src/primitives/tailwind/Button'
import { EditorControlFunctions } from '../../functions/EditorControlFunctions'
import { SelectionState } from '../../services/SelectionServices'
import { PropertiesPanelButton } from '../inputs/Button'
import { commitProperty } from '../properties/Util'

import './ReactFlowStyle.css'
Expand Down Expand Up @@ -85,21 +85,16 @@ const VisualFlow = () => {
return (
<AutoSizer>
{({ width, height }) => (
<div style={{ width, height }}>
<div className="flex items-center justify-center" style={{ width, height }}>
{entities.length && !validEntity ? (
<PropertiesPanelButton
style={{
position: 'absolute',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)'
}}
<Button
variant="outline"
onClick={() => {
addVisualScript()
}}
>
{t('editor:visualScript.panel.addVisualScript')}
</PropertiesPanelButton>
</Button>
) : (
<></>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ export * from './transformers/VisualToFlow'
export * from './transformers/flowToVisual'
export * from './util/autoLayout'
export * from './util/calculateNewEdge'
export * from './util/colors'
export * from './util/getPickerFilters'
export * from './util/getSocketsByNodeTypeAndHandleType'
export * from './util/hasPositionMetaData'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import { Connection, Handle, Position, useReactFlow } from 'reactflow'

import { InputSocketSpecJSON } from '@etherealengine/visual-script'

import { valueTypeColorMap } from '@etherealengine/ui/src/components/editor/panels/VisualScript/util/colors'
import { NodeSpecGenerator } from '../hooks/useNodeSpecGenerator'
import { colors, valueTypeColorMap } from '../util/colors'
import { isValidConnection } from '../util/isValidConnection'
import { AutoSizeInput } from './AutoSizeInput'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ Ethereal Engine. All Rights Reserved.

import React, { PropsWithChildren } from 'react'

import { categoryColorMap } from '@etherealengine/ui/src/components/editor/panels/VisualScript/util/colors'
import { NodeCategory, NodeSpecJSON } from '@etherealengine/visual-script'

import { categoryColorMap, colors } from '../util/colors'
import { colors } from '@mui/material'

const nodeContainerStyle = {
borderRadius: '0.25rem',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import { Connection, Handle, Position, useReactFlow } from 'reactflow'

import { OutputSocketSpecJSON } from '@etherealengine/visual-script'

import { colors, valueTypeColorMap } from '@etherealengine/ui/src/components/editor/panels/VisualScript/util/colors'
import { NodeSpecGenerator } from '../hooks/useNodeSpecGenerator'
import { colors, valueTypeColorMap } from '../util/colors'
import { isValidConnection } from '../util/isValidConnection'

export type OutputSocketProps = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Ethereal Engine. All Rights Reserved.
import React, { useEffect, useState } from 'react'
import { NodeTypes } from 'reactflow'

import { Node } from '../components/Node'
import { Node } from '@etherealengine/ui/src/components/editor/panels/VisualScript/node'
import { NodeSpecGenerator } from './useNodeSpecGenerator'

const getCustomNodeTypes = (specGenerator: NodeSpecGenerator) => {
Expand Down
6 changes: 3 additions & 3 deletions packages/engine/src/scene/components/VolumetricNodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import { NodeCategory, makeFlowNodeDefinition } from '@etherealengine/visual-scr
*/
export const playVolumetric = makeFlowNodeDefinition({
typeName: 'engine/media/volumetric/playVolumetric',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'Play Volumetric',
in: {
flow: 'flow',
Expand All @@ -60,7 +60,7 @@ export const playVolumetric = makeFlowNodeDefinition({
*/
export const setVolumetricTime = makeFlowNodeDefinition({
typeName: 'engine/media/volumetric/setVolumetricTime',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'Set Volumetric Time',
in: {
flow: 'flow',
Expand All @@ -83,7 +83,7 @@ export const setVolumetricTime = makeFlowNodeDefinition({
*/
export const fadeVolumetricAudioVolume = makeFlowNodeDefinition({
typeName: 'engine/media/volumetric/fadeVolumetricVolume',
category: NodeCategory.Effect,
category: NodeCategory.Engine,
label: 'Fade Volumetric Volume',
in: {
flow: 'flow',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const initialState = (): State => ({
// very 3D specific.
export const OnAxis = makeEventNodeDefinition({
typeName: 'engine/axis/use',
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: 'Use Axis',
in: {
axis: (_, graphApi) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const initialState = (): State => ({
const buttonStates = ['down', 'pressed', 'touched', 'up'] as Array<keyof ButtonState>
export const OnButton = makeEventNodeDefinition({
typeName: 'engine/onButton',
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: 'On Button',
in: {
button: (_) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const initialState = (): State => ({
// a visual script node
export const OnCollision = makeEventNodeDefinition({
typeName: 'engine/onCollision',
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: 'Collision Events',

// socket configuration support
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const initialState = (): State => ({
// very 3D specific.
export const OnExecute = makeEventNodeDefinition({
typeName: 'flow/lifecycle/onExecute',
category: NodeCategory.Event,
category: NodeCategory.Flow,
label: 'On Execute',
in: {
system: (_, graphApi) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const initialState = (): State => ({

export const OnQuery = makeEventNodeDefinition({
typeName: 'engine/query/use',
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: 'On Query',
configuration: {
numInputs: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ export function registerActionConsumers() {

const node = makeEventNodeDefinition({
typeName: `action/${namePath}/${dispatchName}/consume`,
category: NodeCategory.Event,
category: NodeCategory.Action,
label: `on ${namePath} ${dispatchName}`,
in: {
system: (_, graph) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export function registerComponentSetters() {
}
const node = makeFlowNodeDefinition({
typeName: `engine/component/${componentName}/set`,
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: `set ${componentName}`,
in: {
flow: 'flow',
Expand Down Expand Up @@ -144,7 +144,7 @@ export function registerComponentGetters() {
}
const node = makeFunctionNodeDefinition({
typeName: `engine/component/${componentName}/get`,
category: NodeCategory.Query,
category: NodeCategory.Engine,
label: `get ${componentName}`,
in: {
entity: 'entity'
Expand Down Expand Up @@ -197,7 +197,7 @@ export function registerComponentListeners() {

const node = makeEventNodeDefinition({
typeName: `engine/component/${componentName}/use`,
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: `use ${componentName}`,
in: {
entity: 'entity'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export function registerStateSetters() {
}
const node = makeFlowNodeDefinition({
typeName: `engine/state/${stateName}/set`,
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: `set ${stateName}`,
in: {
flow: 'flow',
Expand Down Expand Up @@ -109,7 +109,7 @@ export function registerStateGetters() {
}
const node = makeFlowNodeDefinition({
typeName: `engine/state/${stateName}/get`,
category: NodeCategory.Query,
category: NodeCategory.Engine,
label: `get ${stateName}`,
in: {
flow: 'flow'
Expand Down Expand Up @@ -165,7 +165,7 @@ export function registerStateListeners() {
}
const node = makeEventNodeDefinition({
typeName: `engine/state/${stateName}/use`,
category: NodeCategory.Event,
category: NodeCategory.Engine,
label: `Use ${stateName}`,
in: {},
out: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,10 @@ Ethereal Engine. All Rights Reserved.
import * as VolumetricNodes from '@etherealengine/engine/src/scene/components/VolumetricNodes'
import {
getNodeDescriptions,
GetSceneProperty,
getStringConversionsForValueType,
IRegistry,
memo,
NodeDefinition,
SetSceneProperty,
ValueTypeMap
} from '@etherealengine/visual-script'

Expand Down Expand Up @@ -98,8 +96,8 @@ export const getEngineNodesMap = memo<Record<string, NodeDefinition>>(() => {
OnAxis,
// async
//switchScene.Description,
...SetSceneProperty(engineValueTypeNames),
...GetSceneProperty(engineValueTypeNames),
//...SetSceneProperty(engineValueTypeNames),
//...GetSceneProperty(engineValueTypeNames),
// flow control

...getEngineStringConversions(getEngineValuesMap()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { Assert, Choices, NodeCategory, makeFunctionNodeDefinition } from '@ethe
// very 3D specific.
export const getAxis = makeFunctionNodeDefinition({
typeName: 'engine/axis/get',
category: NodeCategory.Query,
category: NodeCategory.Engine,
label: 'get Axis',
in: {
axis: (_, graphApi) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { Assert, NodeCategory, makeFlowNodeDefinition } from '@etherealengine/vi

export const addComponent = makeFlowNodeDefinition({
typeName: 'engine/component/addComponent',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'Add Component',
in: {
flow: 'flow',
Expand Down Expand Up @@ -62,7 +62,7 @@ export const addComponent = makeFlowNodeDefinition({

export const deleteComponent = makeFlowNodeDefinition({
typeName: 'engine/component/deleteComponent',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'Delete Component',
in: {
flow: 'flow',
Expand Down Expand Up @@ -90,7 +90,7 @@ export const deleteComponent = makeFlowNodeDefinition({

export const setTag = makeFlowNodeDefinition({
typeName: 'engine/component/tag/set',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'set Tag',
in: {
flow: 'flow',
Expand All @@ -114,7 +114,7 @@ export const setTag = makeFlowNodeDefinition({

export const removeTag = makeFlowNodeDefinition({
typeName: 'engine/component/tag/remove',
category: NodeCategory.Action,
category: NodeCategory.Engine,
label: 'remove Tag',
in: {
flow: 'flow',
Expand Down
Loading

0 comments on commit 731a6a0

Please sign in to comment.