Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/tgc-utn/tgc-viewer
Browse files Browse the repository at this point in the history
  • Loading branch information
rejurime committed Mar 28, 2018
2 parents 6a809bd + 367607a commit ad545fa
Show file tree
Hide file tree
Showing 9 changed files with 126 additions and 87 deletions.
26 changes: 26 additions & 0 deletions TGC.Core/MeshFactory/DefaultMeshFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using Microsoft.DirectX.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.SceneLoader;

namespace TGC.Core.MeshFactory
{
/// <summary>
/// Factory default que crea una instancia de la clase TgcMesh
/// </summary>
public class DefaultMeshFactory : IMeshFactory
{
public TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType)
{
return new TgcMesh(d3dMesh, meshName, renderType);
}

public TgcMesh createNewMeshInstance(string meshName, TgcMesh originalMesh, TGCVector3 translation,
TGCVector3 rotation, TGCVector3 scale)
{
return new TgcMesh(meshName, originalMesh, translation, rotation, scale);
}


}

}
23 changes: 23 additions & 0 deletions TGC.Core/MeshFactory/DefaultSkeletalMeshFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Microsoft.DirectX.Direct3D;
using TGC.Core.SceneLoader;
using TGC.Core.SkeletalAnimation;

namespace TGC.Core.MeshFactory
{
/// <summary>
/// Factory default que crea una instancia de la clase TgcMesh
/// </summary>
public class DefaultSkeletalMeshFactory: ISkeletalMeshFactory
{
public TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType)
{
return new TgcMesh(d3dMesh, meshName, renderType);
}

public TgcSkeletalMesh createNewSkeletalMesh(Mesh d3dMesh, string meshName,
TgcSkeletalMesh.MeshRenderType renderType, TgcSkeletalBone[] bones)
{
return new TgcSkeletalMesh(d3dMesh, meshName, renderType, bones);
}
}
}
34 changes: 34 additions & 0 deletions TGC.Core/MeshFactory/IMeshFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.DirectX.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.SceneLoader;

namespace TGC.Core.MeshFactory
{
/// <summary>
/// Factory para permitir crear una instancia especifica de la clase TgcMesh
/// </summary>
public interface IMeshFactory
{
/// <summary>
/// Crear una nueva instancia de la clase TgcMesh o derivados
/// </summary>
/// <param name="d3DMesh">Mesh de Direct3D</param>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="renderType">Tipo de renderizado de la malla</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcMesh createNewMesh(Mesh d3DMesh, string meshName, TgcMesh.MeshRenderType renderType);

/// <summary>
/// Crear una nueva malla que es una instancia de otra malla original.
/// Crear una instancia de la clase TgcMesh o derivados
/// </summary>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="originalMesh">Malla original desde la cual basarse</param>
/// <param name="translation">Traslación respecto de la malla original</param>
/// <param name="rotation">Rotación respecto de la malla original</param>
/// <param name="scale">Escala respecto de la malla original</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcMesh createNewMeshInstance(string meshName, TgcMesh originalMesh, TGCVector3 translation, TGCVector3 rotation,
TGCVector3 scale);
}
}
29 changes: 29 additions & 0 deletions TGC.Core/MeshFactory/ISkeletalMeshFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Microsoft.DirectX.Direct3D;
using TGC.Core.SceneLoader;
using TGC.Core.SkeletalAnimation;

namespace TGC.Core.MeshFactory
{
public interface ISkeletalMeshFactory
{
/// <summary>
/// Crear una nueva instancia de la clase TgcMesh o derivados
/// </summary>
/// <param name="d3DMesh">Mesh de Direct3D</param>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="renderType">Tipo de renderizado de la malla</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcMesh createNewMesh(Mesh d3DMesh, string meshName, TgcMesh.MeshRenderType renderType);

/// <summary>
/// Crear una nueva instancia de la clase TgcSkeletalMesh o derivados
/// </summary>
/// <param name="d3DMesh">Mesh de Direct3D</param>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="renderType">Tipo de renderizado de la malla</param>
/// <param name="bones">Huesos de la malla</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcSkeletalMesh createNewSkeletalMesh(Mesh d3DMesh, string meshName, TgcSkeletalMesh.MeshRenderType renderType,
TgcSkeletalBone[] bones);
}
}
50 changes: 1 addition & 49 deletions TGC.Core/SceneLoader/TgcSceneLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using TGC.Core.BoundingVolumes;
using TGC.Core.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.MeshFactory;
using TGC.Core.PortalRendering;
using TGC.Core.Textures;

Expand Down Expand Up @@ -735,54 +736,5 @@ public struct DiffuseMapAndLightmapVertex

#endregion Mesh FVF

#region MeshFactory

/// <summary>
/// Factory para permitir crear una instancia especifica de la clase TgcMesh
/// </summary>
public interface IMeshFactory
{
/// <summary>
/// Crear una nueva instancia de la clase TgcMesh o derivados
/// </summary>
/// <param name="d3dMesh">Mesh de Direct3D</param>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="renderType">Tipo de renderizado de la malla</param>
/// <param name="meshData">Datos de la malla</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType);

/// <summary>
/// Crear una nueva malla que es una instancia de otra malla original.
/// Crear una instancia de la clase TgcMesh o derivados
/// </summary>
/// <param name="name">Nombre de la malla</param>
/// <param name="parentInstance">Malla original desde la cual basarse</param>
/// <param name="translation">Traslación respecto de la malla original</param>
/// <param name="rotation">Rotación respecto de la malla original</param>
/// <param name="scale">Escala respecto de la malla original</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcMesh createNewMeshInstance(string meshName, TgcMesh originalMesh, TGCVector3 translation, TGCVector3 rotation,
TGCVector3 scale);
}

/// <summary>
/// Factory default que crea una instancia de la clase TgcMesh
/// </summary>
public class DefaultMeshFactory : IMeshFactory
{
public TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType)
{
return new TgcMesh(d3dMesh, meshName, renderType);
}

public TgcMesh createNewMeshInstance(string meshName, TgcMesh originalMesh, TGCVector3 translation,
TGCVector3 rotation, TGCVector3 scale)
{
return new TgcMesh(meshName, originalMesh, translation, rotation, scale);
}
}

#endregion MeshFactory
}
}
41 changes: 5 additions & 36 deletions TGC.Core/SkeletalAnimation/TgcSkeletalLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using TGC.Core.BoundingVolumes;
using TGC.Core.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.MeshFactory;
using TGC.Core.SceneLoader;
using TGC.Core.Textures;

Expand All @@ -24,14 +25,14 @@ public class TgcSkeletalLoader
public TgcSkeletalLoader()
{
texturesDict = new Dictionary<string, TgcTexture>();
MeshFactory = new DefaultMeshFactory();
MeshFactory = new DefaultSkeletalMeshFactory();
}

/// <summary>
/// Factory utilizado para crear una instancia de TgcSkeletalMesh.
/// Por default se utiliza la clase DefaultMeshFactory.
/// </summary>
public IMeshFactory MeshFactory { get; set; }
public ISkeletalMeshFactory MeshFactory { get; set; }

/// <summary>
/// Carga un modelo a partir de un archivo
Expand Down Expand Up @@ -494,7 +495,7 @@ private TgcSkeletalMesh crearMeshDiffuseMap(TgcSkeletalLoaderMaterialAux[] mater
}

//Crear mesh de TGC
var tgcMesh = MeshFactory.createNewMesh(mesh, meshData.name, TgcSkeletalMesh.MeshRenderType.DIFFUSE_MAP,
var tgcMesh = MeshFactory.createNewSkeletalMesh(mesh, meshData.name, TgcSkeletalMesh.MeshRenderType.DIFFUSE_MAP,
bones);
tgcMesh.Materials = meshMaterials;
tgcMesh.DiffuseMaps = meshTextures;
Expand Down Expand Up @@ -598,7 +599,7 @@ private TgcSkeletalMesh crearMeshSoloColor(TgcSkeletalMeshData meshData)
}

//Crear mesh de TGC
var tgcMesh = MeshFactory.createNewMesh(mesh, meshData.name, TgcSkeletalMesh.MeshRenderType.VERTEX_COLOR,
var tgcMesh = MeshFactory.createNewSkeletalMesh(mesh, meshData.name, TgcSkeletalMesh.MeshRenderType.VERTEX_COLOR,
bones);
return tgcMesh;
}
Expand Down Expand Up @@ -763,37 +764,5 @@ public struct DiffuseMapVertex

#endregion Mesh FVF

#region MeshFactory

/// <summary>
/// Factory para permitir crear una instancia especifica de la clase TgcMesh
/// </summary>
public interface IMeshFactory
{
/// <summary>
/// Crear una nueva instancia de la clase TgcSkeletalMesh o derivados
/// </summary>
/// <param name="d3dMesh">Mesh de Direct3D</param>
/// <param name="meshName">Nombre de la malla</param>
/// <param name="renderType">Tipo de renderizado de la malla</param>
/// <param name="bones">Huesos de la malla</param>
/// <returns>Instancia de TgcMesh creada</returns>
TgcSkeletalMesh createNewMesh(Mesh d3dMesh, string meshName, TgcSkeletalMesh.MeshRenderType renderType,
TgcSkeletalBone[] bones);
}

/// <summary>
/// Factory default que crea una instancia de la clase TgcMesh
/// </summary>
public class DefaultMeshFactory : IMeshFactory
{
public TgcSkeletalMesh createNewMesh(Mesh d3dMesh, string meshName,
TgcSkeletalMesh.MeshRenderType renderType, TgcSkeletalBone[] bones)
{
return new TgcSkeletalMesh(d3dMesh, meshName, renderType, bones);
}
}

#endregion MeshFactory
}
}
4 changes: 4 additions & 0 deletions TGC.Core/TGC.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@
<Compile Include="Mathematica\TGCVector2.cs" />
<Compile Include="Mathematica\TGCVector3.cs" />
<Compile Include="Mathematica\TGCVector4.cs" />
<Compile Include="MeshFactory\DefaultMeshFactory.cs" />
<Compile Include="MeshFactory\DefaultSkeletalMeshFactory.cs" />
<Compile Include="MeshFactory\IMeshFactory.cs" />
<Compile Include="MeshFactory\ISkeletalMeshFactory.cs" />
<Compile Include="Text\TgcText2D.cs" />
<Compile Include="Camara\TgcCamera.cs" />
<Compile Include="Direct3D\D3DDevice.cs" />
Expand Down
3 changes: 2 additions & 1 deletion TGC.Examples/Lights/TgcMeshBumpMapping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System;
using TGC.Core.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.MeshFactory;
using TGC.Core.SceneLoader;
using TGC.Core.Textures;

Expand Down Expand Up @@ -398,7 +399,7 @@ public struct BumpMappingVertex
/// <summary>
/// Factory customizado para poder crear clase TgcMeshBumpMapping
/// </summary>
public class TgcMeshBumpMappingFactory : TgcSceneLoader.IMeshFactory
public class TgcMeshBumpMappingFactory : IMeshFactory
{
public TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType)
{
Expand Down
3 changes: 2 additions & 1 deletion TGC.Examples/MeshExamples/EjemploCustomMesh.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Windows.Forms;
using TGC.Core.Direct3D;
using TGC.Core.Mathematica;
using TGC.Core.MeshFactory;
using TGC.Core.SceneLoader;
using TGC.Examples.Camara;
using TGC.Examples.Example;
Expand Down Expand Up @@ -118,7 +119,7 @@ public MyCustomMesh(string name, TgcMesh parentInstance, TGCVector3 translation,
/// Debe implementar la interfaz TgcSceneLoader.IMeshFactory
/// En ambos métodos crea una instancia de MyCustomMesh.
/// </summary>
public class MyCustomMeshFactory : TgcSceneLoader.IMeshFactory
public class MyCustomMeshFactory : IMeshFactory
{
public TgcMesh createNewMesh(Mesh d3dMesh, string meshName, TgcMesh.MeshRenderType renderType)
{
Expand Down

0 comments on commit ad545fa

Please sign in to comment.