Compare commits
1 Commits
triangle-r
...
master
Author | SHA1 | Date | |
---|---|---|---|
478e30b24b |
@ -4,6 +4,7 @@
|
||||
<option name="projectPerEditor">
|
||||
<map>
|
||||
<entry key="GLTFViewer/BaseOpenTKControl.axaml" value="GLTFViewer/GLTFViewer.csproj" />
|
||||
<entry key="GLTFViewer/Engine/Ui/Controls/BaseOpenTKControl.axaml" value="GLTFViewer/GLTFViewer.csproj" />
|
||||
<entry key="GLTFViewer/Engine/Ui/Controls/BasePropertyViewerControl.axaml" value="GLTFViewer/GLTFViewer.csproj" />
|
||||
<entry key="GLTFViewer/Engine/Ui/Controls/BaseSceneTreeControl.axaml" value="GLTFViewer/GLTFViewer.csproj" />
|
||||
<entry key="GLTFViewer/Engine/Ui/Controls/MainUI.axaml" value="GLTFViewer/GLTFViewer.csproj" />
|
||||
|
@ -15,6 +15,7 @@ A simple application to load GLTF scenes and render the model(s) in a lit scene
|
||||
|
||||
## Development Status
|
||||
- 01/15/2025 Update 1: Successfully have Avalonia project set up with a BaseOpenTK control rendering the OpenTK context. Also have a Renerer class to seperate out the rendering code from the control, but it's empty for now. There is also some boilerplate UI for the inspector, but its only visual and will need to be filled out.
|
||||
- 01/15/2025 Update 2: Have some basic UI and Node structure. Now deciding how best to load models, render them, and handling scenes.
|
||||
|
||||
## Development Environment
|
||||
- OS: Linux (NixOS)
|
||||
|
8
GLTFViewer/GLTFViewer/Engine/Nodes/Mesh.cs
Normal file
8
GLTFViewer/GLTFViewer/Engine/Nodes/Mesh.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace GLTFViewer.Engine;
|
||||
|
||||
public class Mesh : Node
|
||||
{
|
||||
|
||||
}
|
@ -6,22 +6,32 @@ namespace GLTFViewer.Engine;
|
||||
|
||||
public class Node
|
||||
{
|
||||
public string Name { get; }
|
||||
public ObservableCollection<Node> Children { get; }
|
||||
public ObservableCollection<NodeProperty> Properties { get; }
|
||||
|
||||
public Node(string name)
|
||||
public string Name { get; set; } = "Node";
|
||||
public ObservableCollection<Node> Children { get; } = [];
|
||||
public ObservableCollection<NodeProperty> Properties { get; } = [];
|
||||
|
||||
public virtual void Update()
|
||||
{
|
||||
Name = name;
|
||||
Children = new ObservableCollection<Node>();
|
||||
Properties = new ObservableCollection<NodeProperty>();
|
||||
foreach (var node in Children)
|
||||
{
|
||||
node.Update();
|
||||
}
|
||||
}
|
||||
|
||||
public Node(string name, ObservableCollection<Node> children)
|
||||
|
||||
public virtual void EnterScene()
|
||||
{
|
||||
Name = name;
|
||||
Children = children;
|
||||
Properties = new ObservableCollection<NodeProperty>();
|
||||
foreach (var node in Children)
|
||||
{
|
||||
node.EnterScene();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void ExitScene()
|
||||
{
|
||||
foreach (var node in Children)
|
||||
{
|
||||
node.ExitScene();
|
||||
}
|
||||
}
|
||||
|
||||
public void AddChild(Node child)
|
@ -6,10 +6,8 @@ namespace GLTFViewer.Engine.Ui;
|
||||
|
||||
public class SceneTree
|
||||
{
|
||||
public Node Root { get; } = new Node("root");
|
||||
|
||||
private TreeView _sceneTreeView;
|
||||
private ObservableCollection<Node> _nodes;
|
||||
private ObservableCollection<Node> _nodes = [];
|
||||
|
||||
public SceneTree(TreeView sceneTreeView)
|
||||
{
|
||||
@ -20,15 +18,6 @@ public class SceneTree
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
Root.AddProperty(new NodeProperty<string>("TestPropertyString", "TestValue"));
|
||||
Root.AddProperty(new NodeProperty<int>("TestPropertyInt", 42));
|
||||
|
||||
|
||||
_nodes = new ObservableCollection<Node>()
|
||||
{
|
||||
Root
|
||||
};
|
||||
|
||||
_sceneTreeView.ItemsSource = _nodes;
|
||||
_sceneTreeView.ItemTemplate = new FuncTreeDataTemplate<Node>(
|
||||
(node, _) =>
|
||||
|
Loading…
Reference in New Issue
Block a user