-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Import behave flow + flow side by side model viewer #159
Conversation
Made editor so that you can toggle between split editor and not, depending on if you have a model file code cleanup - already have graph json so we just grab it and render it instead of regneerate from nodes and edges Fixed flow editor with new build and subfolder. Added a readme in examples
.eslintrc
Outdated
@@ -30,7 +30,6 @@ | |||
"argsIgnorePattern": "^_" | |||
} | |||
], | |||
"import/extensions": ["error", "always", {"ignorePackages": true} ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bhouston this is kind of a difficult rule to follow, it means you need to add the file extension whenever you import in typescript.
Is it ok to get rid of this rule? Makes the code easier to write/read when you can just do:
import { useRegistry } from './hooks/useRegistry';
wheras before you would need to do:
import { useRegistry } from './hooks/useRegistry.js';
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did this because it allows for many loaders to load JavaScript files in the browser without bundling. This explains the reasoning: https://stackoverflow.com/questions/70461497/why-do-i-need-to-add-the-js-extension-when-importing-files-in-typescript-but-no?utm_source=feedburner&utm_medium=email
That said, I can just always use a bundler.
On that topic, right now if there are errors in the code, say when I run exec-graph, I do not see any source maps. It makes it a bit harder to track down the errors to the original line in the typescript file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When would you want to load js files in the browser? I think we could just use the chrome debugger and it loads the typescript files via its sourcemaps?
Yes seeing source maps would be ideal when running exec-graph
. A nice way to do this is to just use ts-node
- then you get all errors showing up in the original source code location. And you get rid of the need for the step to build the files before. I originally wanted to setup running the exec-graph scripts using ts-node, but it will not work when you want to import .js
files:
TypeStrong/ts-node#783
import { Graph } from '../../../Graphs/Graph.js'; | ||
import { EventNode } from '../../../Nodes/EventNode.js'; | ||
import { NodeDescription } from '../../../Nodes/Registry/NodeDescription.js'; | ||
import { Socket } from '../../../Sockets/Socket.js'; | ||
import { IScene } from '../Abstractions/IScene.js'; | ||
|
||
// very 3D specific. | ||
export class OnSceneNodeClick extends EventNode { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bhouston could you please provide feedback on this implementation?
@@ -5,4 +5,8 @@ export interface IScene { | |||
jsonPath: string, | |||
callback: (jsonPath: string) => void | |||
): void; | |||
removeOnClickedListener( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added so that it can be unbound on dispose/cleanup
|
||
private sendNodeClickedData = (engine: Engine) => { | ||
engine.commitToNewFiber(this, 'flow'); | ||
engine.commitToNewFiber(this, 'secondFlow'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ToDo: delete this
[], | ||
[new Socket('flow', 'flow'), new Socket('float', 'nodeIndex')] | ||
[new Socket('string', 'jsonPath')], | ||
[new Socket('flow', 'flow'), new Socket('flow', 'secondFlow')] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ToDo: Delete
This a great start, but I'm not happy merging in the current state. I've stated elsewhere that I'm only happy for react-flow to become part of the monorepo if it stays an independent npm module, and decoupled from everything except for it's main dependencies, react-flow and behave-graph (so it can be imported elsewhere). I'm not super happy with it being relegated to example code and the only copy of it being so tightly integrated with a 3D preview. Could we perhaps tweak this PR to keep the 3D example (which is great btw), but also keep react-flow as a separately developable and deployable library? |
@beeglebug that totally makes sense. That was going to be the next thing to do - separate those as their own importable lib. I tried this for a bit but it required modifying the root build config of the monorepo to support building react components, and also ran into challenges with tailwind inside of an imported module. I was going to do the separation all as part of a separate PR in order to do things iteratively but if you think it's better it can be done all at once in a single PR |
Sorry if it's a hassle, but I would be much happier with a standalone
package.
I am happy to move the package to the org though, so it can be
@behave-graph/editor (or whatever people prefer).
…On Tue, 22 Nov 2022, 07:54 Dan Oved, ***@***.***> wrote:
@beeglebug <https://github.com/beeglebug> that totally makes sense. That
was going to be the next thing to do - separate those as their own
importable lib. But to do that it would require modifying the root build
config of the monorepo to support building react components, and also ran
into challenges with tailwind inside of an imported module. I was going to
do this separation all as part of a separate PR but if you think it's
better it can be done all at once.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMHFEW2VSSACYASEC63WJR323ANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
the idea is it would be a standalone package within the
There are lots of advantages to keeping it in a single mono repo organized into packages, mainly that the react-flow code can be updated in parallel with the core lib code. This is pretty much the same thing as having it in a separate github repo, except you get the benefit of being able to update and see all in one place. This type of structure is how tensorflow.js, react-three-fiber, and react are organized |
Yep, big fan of the monorepo approach, just wary of dumping what should be
a package into an examples folder.
Appreciate that you say that was the plan, but would much prefer it to be
done in one go if possible.
…On Tue, 22 Nov 2022, 08:05 Dan Oved, ***@***.***> wrote:
the idea is it would be a standalone package within the packages folder,
so there would be:
packages/core (where the current behave-graph core code is, such as nodes
engines).
packages/editor (where the reusable behave-flow code would sit). This
folder would have its own package.json, so you could still import it in in
another app with import {Flow} from ***@***.***/editor'
examples/editor would have minimal code that just imports the components
from packages/editor and could render it side by side with the three.js
scene
There are lots of advantages to keeping it in a single mono repo organized
into packages, mainly that the react-flow code can be updated in parallel
with the core lib code.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMG5TJA6S65NBO2CSLTWJR5EFANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
yeah sure will do it in one go then. thanks for looking out to make sure things are done the right way! |
Let me know if I can help in any way
…On Tue, 22 Nov 2022, 08:09 Dan Oved, ***@***.***> wrote:
yeah sure will do it in one go then. thanks for looking out to make sure
things are done the right way, and get your aversion to the original PR
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMCAIVBYDAM6SDENX4LWJR5RZANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
curious if you've seen anywhere examples of how to have tailwind in a module you import, not sure what the right approach is here. |
I haven't, I assumed it would work like any other package as a sub dep.
What specifically doesn't work?
…On Tue, 22 Nov 2022, 08:13 Dan Oved, ***@***.***> wrote:
curious if you've seen anywhere examples of how to have tailwind in a
module you import, not sure what the right approach is here.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMHU6CYJ6J2GJ6SZHZTWJR6CTANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
This definitely should be another "package. Maybe called it "package/react-flow" and it would be published under the name "@behave-graph/react-flow"? I think we should have this "react-flow" package separate from the editor if possible. Because some people have non-three.js editors. |
I'm tempted to try and come up with something less tied to react flow,
behave-flow is it's own thing really, and more tied to behave-graph than
react-flow, that just happens to be the current renderer for the nodes and
could change in the future.
But I also hate naming things, and hate getting bogged down by trying to
name something even more, so happy to go with what the group decides.
…On Tue, 22 Nov 2022, 13:55 Ben Houston, ***@***.***> wrote:
This definitely should be another "package. Maybe called it
"package/react-flow" and it would be published under the name
***@***.***/react-flow"?
I think we should have this "react-flow" package separate from the editor
if possible. Because some people have non-three.js editors.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMELCU24Z6LKZ3EXDS3WJTGEVANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
The reason I think that "@behave-graph/react-flow" makes sense to me is that there is already "@behave-graph" in the package name and this is an adaption of React Flow to working with behave-graph. I wouldn't want to repeat the name "behave" again. Just like I call the library "core" now but within the "@behave-graph/core" namespace so it is clear, it is the core engine of the "@behave-graph" set of tools. Basically because have the upper namespace "@behave-graph", we do not need to fully describe how the sub packages relate to behave-graph, as it is assumed. :) I've seen this elsewhere as well, like with @react-three. The core library is just "fiber" and it has other similar simple names for the packages but you know they are all for @react-three because it is the upper level namespace. |
I'll do a bit of work on this PR now as I have some time. I'll try my hands at moving around behave-flow into the packages section so we can publish it as its own module. We can of course rename it easily. |
@beeglebug how about "@behave-graph/flow"? Is that nicer than "@behave-graph/react-flow"? |
Damn, the behave-flow package is intermingled with the editor now. I suspect that is probably because its existing interfaces were not sufficient for integrating with a 3D viewer, so @oveddan you had to modify it? I wonder if we can keep those modifications and put it back into a reusable component separately? I am unfortunately not great at React so this is not something I should be leading. I think we need at least 2 packages:
And then we have an example that uses these two and makes an editor out of these two components. But I would suggest keeping the crypto-elements out of it for now. The more we push into reusable libraries the easier it should be for you to make your crypto-specific extensions on top of this work, rather than having to copy large blocks of code and modify them... it is actually an excellent test of whether we have the right abstractions. Maybe I can try to pull out the three-specific things? I'll try to do this for a bit longer. |
Sorry for any confusion I wasn't suggesting @behave-graph/behave-flow, just saying I don't necessarily want the full "react-flow" library name in there, as to me it implies it's a fork or something, when it's (hopefully) much more than that. I would also be 100% against any crypto stuff in this repo, its so far removed from the original scope of the project. |
Yes agreed the crypto stuff doesn't belong in here and there was no intention to import it - it is not anywhere in the code that's being used...some of it may have been accidentally brought into the lib during a copy and paste; I will clear out any remnants of it. Agreed with the
Not sure what you are saying here - where was there an editor before, and where was it separate before? I think I may have created confusion when labeling the model viewer an "editor" in this PR description. This just added a model viewer next to the flow editor, and hides the model viewer if there is no model, making the flow editor full screen. The next plan was to extract the reusable behave-flow components into their own lib. We discussed this in the thread above - the plan was originally to have a 2nd pr to do that separation but now we will just do it all as 1 PR |
Also there may be some nice reusable react-three-fiber based components built in react, where would they go? I could see an argument for a |
Accidentally imported crypto-related remnants removed here f6e36a8 |
also - it may make sense to have 2 separate examples - one with the model viewer side by side with the flow editor, and another with just the flow editor for non 3d-based examples. The way this demo currently works is that if there is a model file, it'll show it side by side, and if not, it just makes the flow editor full screen. Curious your thoughts on having 2 separate examples, one for each case, or having it all as just 1 example like this |
return style; | ||
}; | ||
|
||
export const LoadModal: FC<LoadModalProps> = ({ open = false, onClose, handleGraphJsonLoaded, setModelFile}) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This component was modified to allow loading a 3d model, as well as preview it, but based on our discussion in the PR it probably makes more sense to have the 3d model loaded somewhere else, as to not clutter the core flow-editor with three.js related things. I can work on reverting that change.
/> | ||
</div> | ||
{/* @ts-ignore */} | ||
<GltfLoader fileUrl={modelFile?.dataUri} setGltf={setGltf} /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this needs to be here because we cannot use useGLTF
if the input value is possible null - so this is kind of a hacky workaround where you only load the hook if there is a value for the model url. Will look into a better way to to this - like just using the GLTFloader directly instead of the useGLTF hook.
I've just pushed splitting out "@behave-graph/three" from the "three-viewer" example. This is of course different than the react-three module you derived from it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! this makes perfect sense.
I think it is fine. I think "@behave-graph/react-three" would be the best place for the Three.js react-three fiber viewer. |
Great will start working on this later. Thanks for both of yours feedback! |
I think we need to keep in mind which bits of this are intended to be
exported as packages for other people to import, and which bits are just
examples built with the underlying packages, to show what the core graph
library is capable of.
I'm a little wary of expanding the scope of the org/repo to include every
possible thing that can be built with behave-graph.
…On Tue, 22 Nov 2022, 16:05 Dan Oved, ***@***.***> wrote:
Great will start working on this later. Thanks for both of yours feedback!
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMBGYIETALGGQTKDBO3WJTVM5ANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
yeah agreed with this. I do see though react-three-fiber as a common way people would want to use this framework, and providing a couple importable hooks or components that let people do this with a few lines of code would be great; it is something I would import in my own projects - but that also could in theory be its own lib. So my thoughts are for this PR - separate reusable flow things into their own package and import into example. Hold off on react-three-fiber lib extraction for now (keep that stuff in examples) and leave that for a future discussion/PR |
I am okay with that. :) |
i've just started going through the code and adding comments, but i've given up because theres too many things to comment on. i honestly think all the modifications to behave-flow need stripping out before it gets moved to the this repo, almost every change I can see is super specific to the project you used it in, and is not generic enough to remain in place in the published library at this point I think a fresh PR to add behave-flow into the project as a package would be a better starting point, then we can come back and look at how we allow you to bolt extra functionality on top of the library to enable this complex example in a more composable way |
I noticed that as well.... #159 (comment) Okay. I can do that. |
In my PR I was actually working on extracting out the 3d specific things to be only in the example, and leaving the core behave-flow library being generic, and had that done (just hadn't pushed it yet). I've just pushed that update that extracts the side-by-side functionality into examples and leaves behave-flow being generic into my branch, but it doesn't show up here since the PR has been closed - you can see the standalone package here The only thing I got hung up on, which whoever will take on the new PR would deal with as well, would be how to import the css that is bundled, given it depends on postcss and taliwind. It's not so straightforward and theres little documentation on how to do so because it's not typical - in fact I would suggest removing tailwind from behave-flow in this repo, and using css modules so that the styles can be scoped to the components that are imported and not imported globally. Or if the desire is to use tailwind, you may have success using something like this - I tried but had no luck.
I'd disagree with this characterization - there are many improvements to in this PR to the core behave-flow:
That being said - I agree that the better approach, as you suggested, would have been to import behave-flow as is, then add these improvements after the fact, as well as making its api more flexible to allow you to build on top of it. One thing that would be great would be being able to define custom renderings for input or output nodes. I also think a lot of the react functionality from this work would be useful in a standalone way (
|
I'll definitely like to keep some of the hooks, although from a quick look
a lot of the usage of useCallback needs double checking, i can see a lot of
missing dependencies which can cause subtle bugs.
They're all very easily fixed though, so I would definitely consider
porting slightly modified versions of the hooks into the new PR.
…On Wed, 23 Nov 2022, 16:33 Dan Oved, ***@***.***> wrote:
In my PR I was actually working on extracting out the 3d specific things
to be only in the example, and leaving the core behave-flow library being
generic, and had that done (just hadn't pushed it yet). I've just pushed
that update that extracts the side-by-side functionality into examples and
leaves behave-flow being generic into my branch, but it doesn't show up
here since the PR has been closed - you can see the standalone package
here
<https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow>
The only thing I got hung up on, which whoever will take on the new PR
would deal with as well, would be how to import the css that is bundled,
given it depends on postcss and taliwind. It's not so straightforward and
theres little documentation on how to do so because it's not typical - in
fact I would suggest removing tailwind from behave-flow in this repo, and
using css modules
<https://www.gatsbyjs.com/docs/how-to/styling/css-modules/> so that the
styles can be scoped to the components that are imported and not imported
globally. Or if the desire is to use tailwind, you may have success using
something like this
<https://github.com/bradlc/babel-plugin-tailwind-components> - I tried
but had no luck.
almost every change I can see is super specific to the project you used it
in, and is not generic enough to remain in place in the published library
I'd disagree with this characterization - there are many improvements to
the core behave-flow:
- extracting reusable functionality into hooks that could become an
API (you can see then all extracted here
<https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow/src/hooks>
)
- improving performance by wrapping functions in useCallback.
- Have the graph and engine auto-update when playing if any node is
changed (in the useEngine
<https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useEngine.ts#L10>
hook)
That being said - I agree that the better approach, as you suggested,
would have been to import behave-flow as is, then add these improvements
after the fact, as well as making its api more flexible to allow you to
build on top of it. One thing that would be great would be being able to
define custom renderings for input or output nodes.
I also think a lot of the react functionality from this work would be
useful in a standalone way ***@***.***/react ?), in particular:
- The hooks: useEngine
<https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useEngine.ts>,
useRegistry
<https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useRegistry.ts>
- The IScene implementation
<https://github.com/oveddan/behave-graph/blob/behave-flow/examples/flow/src/scene/useSceneModifier.ts>
- All the other r3f functionality to apply updates and add click
handlers
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMEMN2GKS73TOIKW43LWJZBORANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
yeah good eye - the missing dependencies in the hooks are a bug. would be good to turn on the eslint rules around that. |
If I get time (I have very little spare at the moment unfortunately), I'll
have a go at porting the hooks into the current behave-flow repo as well as
removing tailwind in favour of plain CSS modules (although the though of
hand writing all that CSS now fills me with dread, tailwind has made me
lazy!)
…On Wed, 23 Nov 2022, 17:28 Dan Oved, ***@***.***> wrote:
I'll definitely like to keep some of the hooks, although from a quick look
a lot of the usage of useCallback needs double checking, i can see a lot of
missing dependencies which can cause subtle bugs. They're all very easily
fixed though, so I would definitely consider porting slightly modified
versions of the hooks into the new PR.
… <#m_-7160618099945812420_>
On Wed, 23 Nov 2022, 16:33 Dan Oved, *@*.*> wrote: In my PR I was
actually working on extracting out the 3d specific things to be only in the
example, and leaving the core behave-flow library being generic, and had
that done (just hadn't pushed it yet). I've just pushed that update that
extracts the side-by-side functionality into examples and leaves
behave-flow being generic into my branch, but it doesn't show up here since
the PR has been closed - you can see the standalone package here
https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow
<https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow>
The only thing I got hung up on, which whoever will take on the new PR
would deal with as well, would be how to import the css that is bundled,
given it depends on postcss and taliwind. It's not so straightforward and
theres little documentation on how to do so because it's not typical - in
fact I would suggest removing tailwind from behave-flow in this repo, and
using css modules https://www.gatsbyjs.com/docs/how-to/styling/css-modules/
<https://www.gatsbyjs.com/docs/how-to/styling/css-modules/> so that the
styles can be scoped to the components that are imported and not imported
globally. Or if the desire is to use tailwind, you may have success using
something like this
https://github.com/bradlc/babel-plugin-tailwind-components
<https://github.com/bradlc/babel-plugin-tailwind-components> - I tried but
had no luck. almost every change I can see is super specific to the project
you used it in, and is not generic enough to remain in place in the
published library I'd disagree with this characterization - there are many
improvements to the core behave-flow: - extracting reusable functionality
into hooks that could become an API (you can see then all extracted here
https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow/src/hooks
<https://github.com/oveddan/behave-graph/tree/behave-flow/packages/flow/src/hooks>
) - improving performance by wrapping functions in useCallback. - Have the
graph and engine auto-update when playing if any node is changed (in the
useEngine
https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useEngine.ts#L10
<https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useEngine.ts#L10>
hook) That being said - I agree that the better approach, as you suggested,
would have been to import behave-flow as is, then add these improvements
after the fact, as well as making its api more flexible to allow you to
build on top of it. One thing that would be great would be being able to
define custom renderings for input or output nodes. I also think a lot of
the react functionality from this work would be useful in a standalone way
@.*/react ?), in particular: - The hooks: useEngine
https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useEngine.ts,
useRegistry
https://github.com/oveddan/behave-graph/blob/behave-flow/packages/flow/src/hooks/useRegistry.ts
- The IScene implementation
https://github.com/oveddan/behave-graph/blob/behave-flow/examples/flow/src/scene/useSceneModifier.ts
- All the other r3f functionality to apply updates and add click handlers —
Reply to this email directly, view it on GitHub <#159 (comment)
<#159 (comment)>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHJAMEMN2GKS73TOIKW43LWJZBORANCNFSM6AAAAAASHOTMMU
. You are receiving this because you were mentioned.Message ID: *@*.***>
yeah good eye - the missing dependencies in the hooks are a bug. would be
good to turn on the eslint rules around that.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAHJAMAOZ4BORR5VIDJB7LDWJZH2LANCNFSM6AAAAAASHOTMMU>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I also cannot imagine a life without tailwind! But I think you could still use it the way it is used now in The only thing that would be good to change are these two css imports: I would say the |
This PR imports the code from @beeglebug's behave-flow into the main behave-graph monorepo, so that the flow code and be developed and updated in sync with the core library code.
A future V2 pr would separate out reusable components and hooks so that developers could import them and integrate them into their existing solution.
It also adds the following improvements, which it incorporates from @oveddan's interX:
Interactive 3d Scene Preview
GLB files can be rendered and interactive in a three.js scene side-by-side with the flow editor, and updates to the editor apply in real-time to the scene.
User can upload their own 3d model:
(todo: gif)
User can load examples that contain both a model and behave graph
...if only behave-graph loaded (without a 3d model), then view will not be split:
Split pane can be adjusted
A user can drag the split in the middle, and also change the split to be vertical or horizontal:
handle
ToDo: