optimizing

This commit is contained in:
Perfare
2018-07-24 22:05:02 +08:00
parent d523862fac
commit 35edb9d391
5 changed files with 84 additions and 70 deletions

View File

@ -43,7 +43,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Imported.cs" />
<Compile Include="ObjChildren.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View File

@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using SharpDX;
@ -15,11 +16,61 @@ namespace AssetStudio
List<ImportedMorph> MorphList { get; }
}
public class ImportedFrame : ObjChildren<ImportedFrame>, IObjChild
public class ImportedFrame : IEnumerable<ImportedFrame>
{
public string Name { get; set; }
public Matrix Matrix { get; set; }
public dynamic Parent { get; set; }
public ImportedFrame Parent { get; set; }
private List<ImportedFrame> children;
public ImportedFrame this[int i] => children[i];
public int Count => children.Count;
public void InitChildren(int count)
{
children = new List<ImportedFrame>(count);
}
public void AddChild(ImportedFrame obj)
{
children.Add(obj);
obj.Parent = this;
}
public void InsertChild(int i, ImportedFrame obj)
{
children.Insert(i, obj);
obj.Parent = this;
}
public void RemoveChild(ImportedFrame obj)
{
obj.Parent = null;
children.Remove(obj);
}
public void RemoveChild(int i)
{
children[i].Parent = null;
children.RemoveAt(i);
}
public int IndexOf(ImportedFrame obj)
{
return children.IndexOf(obj);
}
public IEnumerator<ImportedFrame> GetEnumerator()
{
return children.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
public class ImportedMesh

View File

@ -1,65 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
namespace AssetStudio
{
public interface IObjChild
{
dynamic Parent { get; set; }
}
public abstract class ObjChildren<T> : IEnumerable<T> where T : IObjChild
{
protected List<T> children;
public T this[int i] => children[i];
public int Count => children.Count;
public void InitChildren(int count)
{
children = new List<T>(count);
}
public void AddChild(T obj)
{
children.Add(obj);
obj.Parent = this;
}
public void InsertChild(int i, T obj)
{
children.Insert(i, obj);
obj.Parent = this;
}
public void RemoveChild(T obj)
{
obj.Parent = null;
children.Remove(obj);
}
public void RemoveChild(int i)
{
children[i].Parent = null;
children.RemoveAt(i);
}
public int IndexOf(T obj)
{
return children.IndexOf(obj);
}
public IEnumerator<T> GetEnumerator()
{
return children.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}