Skip to content

Commit

Permalink
Set up readonly for some skeleton logic.
Browse files Browse the repository at this point in the history
  • Loading branch information
MeltyPlayer committed Apr 26, 2024
1 parent 66b83ad commit a40ab06
Show file tree
Hide file tree
Showing 10 changed files with 20 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

namespace fin.ui.rendering.gl.model {
public interface ISkeletonRenderer : IRenderable {
ISkeleton Skeleton { get; }
IReadOnlySkeleton Skeleton { get; }
IReadOnlyBone? SelectedBone { get; set; }
float Scale { get; set; }
}
Expand All @@ -21,13 +21,13 @@ public interface ISkeletonRenderer : IRenderable {
public class SkeletonRenderer : ISkeletonRenderer {
private readonly IBoneTransformManager boneTransformManager_;

public SkeletonRenderer(ISkeleton skeleton,
public SkeletonRenderer(IReadOnlySkeleton skeleton,
IBoneTransformManager boneTransformManager) {
this.Skeleton = skeleton;
this.boneTransformManager_ = boneTransformManager;
}

public ISkeleton Skeleton { get; }
public IReadOnlySkeleton Skeleton { get; }
public IReadOnlyBone? SelectedBone { get; set; }
public float Scale { get; set; } = 1;

Expand All @@ -45,7 +45,7 @@ public void Render() {

GL.Color4(0, 0, 1f, 1);

var boneQueue = new Queue<(IBone, Vector3?)>();
var boneQueue = new Queue<(IReadOnlyBone, Vector3?)>();
boneQueue.Enqueue((this.Skeleton.Root, null));
while (boneQueue.Any()) {
var (bone, parentLocation) = boneQueue.Dequeue();
Expand Down
3 changes: 2 additions & 1 deletion FinModelUtility/Fin/Fin/src/model/SkeletonInterfaces.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
using schema.readOnly;

namespace fin.model {
public interface ISkeleton : IEnumerable<IBone> {
[GenerateReadOnly]
public partial interface ISkeleton : IEnumerable<IReadOnlyBone> {
IBone Root { get; }
IReadOnlyList<IBone> Bones { get; }
}
Expand Down
4 changes: 2 additions & 2 deletions FinModelUtility/Fin/Fin/src/model/impl/SkeletonImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,8 @@ public IBone AlwaysFaceTowardsCamera(Quaternion adjustment) {

IEnumerator IEnumerable.GetEnumerator() => this.GetEnumerator();

public IEnumerator<IBone> GetEnumerator() {
var queue = new Queue<IBone>();
public IEnumerator<IReadOnlyBone> GetEnumerator() {
var queue = new Queue<IReadOnlyBone>();
queue.Enqueue(this.Root);
while (queue.Count > 0) {
var bone = queue.Dequeue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class GltfSkeletonBuilder {
GltfNode rootNode,
GltfSkin skin,
float scale,
ISkeleton skeleton) {
IReadOnlySkeleton skeleton) {
var rootBone = skeleton.Root;

var boneQueue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ public class GltfSkinBuilder {

var boneToIndex
= model.Skeleton.Skip(1)
.CastTo<IBone, IReadOnlyBone>()
.ToIndexByValueIndexableDictionary();

var nullMaterialBuilder =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private void FactorModelIntoBounds_(IReadOnlyModel model,
}

if (!anyVertices) {
var boneQueue = new Queue<IBone>();
var boneQueue = new Queue<IReadOnlyBone>();
boneQueue.Enqueue(model.Skeleton.Root);

while (boneQueue.Count > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public override Bounds CalculateBounds(IScene scene) {
}

if (!anyVertices) {
var boneQueue = new Queue<IBone>();
var boneQueue = new Queue<IReadOnlyBone>();
boneQueue.Enqueue(model.Skeleton.Root);

while (boneQueue.Count > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ private void FactorModelIntoBounds_(ISceneModel sceneModel,
}

if (!anyVertices) {
var boneQueue = new Queue<IBone>();
var boneQueue = new Queue<IReadOnlyBone>();
boneQueue.Enqueue(model.Skeleton.Root);

while (boneQueue.Count > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private HWModel[] ImportModels_() {
var modelQueue = new Queue<(VisModel, VisSubModelRef?, bool)>();
modelQueue.Enqueue((firstModel, null, true));

var attachmentPointMap = new NullFriendlyDictionary<string, (ISceneModel, IBone)>();
var attachmentPointMap = new NullFriendlyDictionary<string, (ISceneModel, IReadOnlyBone)>();

while (modelQueue.Count > 0) {
var (visModel, subModelRef, flipFaces) = modelQueue.Dequeue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public interface ISkeletonTreeView {

public interface ISkeletonTreeNode {
string Text { get; }
IBone Bone { get; }
IReadOnlyBone Bone { get; }

ISkeletonTreeNode? Parent { get; }
}
Expand All @@ -35,26 +35,26 @@ public partial class SkeletonTreeView : UserControl, ISkeletonTreeView {
protected class SkeletonNode : ISkeletonTreeNode {
private readonly common.IBetterTreeNode<SkeletonNode> treeNode_;

public SkeletonNode(SkeletonTreeView treeView, IBone bone) {
public SkeletonNode(SkeletonTreeView treeView, IReadOnlyBone bone) {
this.Bone = bone;

this.treeNode_ = treeView.betterTreeView_.Root;
this.treeNode_.Data = this;
}

private SkeletonNode(SkeletonNode parent, IBone bone) {
private SkeletonNode(SkeletonNode parent, IReadOnlyBone bone) {
this.Bone = bone;

this.treeNode_ = parent.treeNode_.Add(bone.Name);
this.treeNode_.Data = this;
}

public string Text => this.treeNode_.Text ?? "n/a";
public IBone Bone { get; set; }
public IReadOnlyBone Bone { get; set; }

public ISkeletonTreeNode? Parent => this.treeNode_.Parent?.Data;

public SkeletonNode AddChild(IBone bone) => new(this, bone);
public SkeletonNode AddChild(IReadOnlyBone bone) => new(this, bone);
}

public SkeletonTreeView() {
Expand All @@ -72,13 +72,13 @@ public SkeletonTreeView() {
};
}

public void Populate(ISkeleton? skeleton) {
public void Populate(IReadOnlySkeleton? skeleton) {
this.betterTreeView_.BeginUpdate();
this.betterTreeView_.Clear();

if (skeleton != null) {
var boneQueue =
new FinTuple2Queue<IBone, SkeletonNode>(
new FinTuple2Queue<IReadOnlyBone, SkeletonNode>(
(skeleton.Root, new SkeletonNode(this, skeleton.Root)));
while (boneQueue.TryDequeue(out var bone, out var node)) {
boneQueue.Enqueue(
Expand Down

0 comments on commit a40ab06

Please sign in to comment.