mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 08:04:40 +00:00
* Adjustment: Initial CMake reworking.
This commit is contained in:
parent
516163fd5d
commit
d7cdf54661
5394 changed files with 2615532 additions and 8711 deletions
542
Engine/lib/assimp/tools/assimp_view/Display.h
Normal file
542
Engine/lib/assimp/tools/assimp_view/Display.h
Normal file
|
|
@ -0,0 +1,542 @@
|
|||
/*
|
||||
---------------------------------------------------------------------------
|
||||
Open Asset Import Library (assimp)
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2006-2020, assimp team
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use of this software in source and binary forms,
|
||||
with or without modification, are permitted provided that the following
|
||||
conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above
|
||||
copyright notice, this list of conditions and the
|
||||
following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
* Neither the name of the assimp team, nor the names of its
|
||||
contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior
|
||||
written permission of the assimp team.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#if (!defined AV_DISPLAY_H_INCLUDED)
|
||||
#define AV_DISPLAY_H_INCLUDE
|
||||
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
#include <commctrl.h>
|
||||
|
||||
// see CDisplay::m_aiImageList
|
||||
#define AI_VIEW_IMGLIST_NODE 0x0
|
||||
#define AI_VIEW_IMGLIST_MATERIAL 0x1
|
||||
#define AI_VIEW_IMGLIST_TEXTURE 0x2
|
||||
#define AI_VIEW_IMGLIST_TEXTURE_INVALID 0x3
|
||||
#define AI_VIEW_IMGLIST_MODEL 0x4
|
||||
|
||||
namespace AssimpView
|
||||
{
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
/* Corresponds to the "Display" combobox in the UI
|
||||
*/
|
||||
//-------------------------------------------------------------------------------
|
||||
class CDisplay
|
||||
{
|
||||
private:
|
||||
|
||||
// helper class
|
||||
struct Info
|
||||
{
|
||||
Info( D3DXVECTOR4* p1,
|
||||
AssetHelper::MeshHelper* p2,
|
||||
const char* p3 )
|
||||
: pclrColor( p1 ), pMesh( p2 ), szShaderParam( p3 ) {}
|
||||
|
||||
D3DXVECTOR4* pclrColor;
|
||||
AssetHelper::MeshHelper* pMesh;
|
||||
const char* szShaderParam;
|
||||
};
|
||||
|
||||
// default constructor
|
||||
CDisplay()
|
||||
: m_iViewMode( VIEWMODE_FULL ),
|
||||
m_pcCurrentTexture( NULL ),
|
||||
m_pcCurrentNode( NULL ),
|
||||
m_pcCurrentMaterial( NULL ),
|
||||
m_hImageList( NULL ),
|
||||
m_hRoot( NULL ),
|
||||
m_fTextureZoom( 1000.0f )
|
||||
{
|
||||
this->m_aiImageList[ 0 ] = 0;
|
||||
this->m_aiImageList[ 1 ] = 1;
|
||||
this->m_aiImageList[ 2 ] = 2;
|
||||
this->m_aiImageList[ 3 ] = 3;
|
||||
this->m_aiImageList[ 4 ] = 4;
|
||||
|
||||
this->m_avCheckerColors[ 0 ].x = this->m_avCheckerColors[ 0 ].y = this->m_avCheckerColors[ 0 ].z = 0.4f;
|
||||
this->m_avCheckerColors[ 1 ].x = this->m_avCheckerColors[ 1 ].y = this->m_avCheckerColors[ 1 ].z = 0.6f;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
enum
|
||||
{
|
||||
// the full model is displayed
|
||||
VIEWMODE_FULL,
|
||||
|
||||
// a material is displayed on a simple spjere as model
|
||||
VIEWMODE_MATERIAL,
|
||||
|
||||
// a texture with an UV set mapped on it is displayed
|
||||
VIEWMODE_TEXTURE,
|
||||
|
||||
// a single node in the scenegraph is displayed
|
||||
VIEWMODE_NODE,
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// represents a texture in the tree view
|
||||
struct TextureInfo
|
||||
{
|
||||
// texture info
|
||||
IDirect3DTexture9** piTexture;
|
||||
|
||||
// Blend factor of the texture
|
||||
float fBlend;
|
||||
|
||||
// blend operation for the texture
|
||||
aiTextureOp eOp;
|
||||
|
||||
// UV index for the texture
|
||||
unsigned int iUV;
|
||||
|
||||
// Associated tree item
|
||||
HTREEITEM hTreeItem;
|
||||
|
||||
// Original path to the texture
|
||||
std::string szPath;
|
||||
|
||||
// index of the corresponding material
|
||||
unsigned int iMatIndex;
|
||||
|
||||
// type of the texture
|
||||
unsigned int iType;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// represents a node in the tree view
|
||||
struct NodeInfo
|
||||
{
|
||||
// node object
|
||||
aiNode* psNode;
|
||||
|
||||
// corresponding tree view item
|
||||
HTREEITEM hTreeItem;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// represents a mesh in the tree view
|
||||
struct MeshInfo
|
||||
{
|
||||
// the mesh object
|
||||
aiMesh* psMesh;
|
||||
|
||||
// corresponding tree view item
|
||||
HTREEITEM hTreeItem;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// represents a material in the tree view
|
||||
struct MaterialInfo
|
||||
{
|
||||
// material index
|
||||
unsigned int iIndex;
|
||||
|
||||
// material object
|
||||
aiMaterial* psMaterial;
|
||||
|
||||
// ID3DXEffect interface
|
||||
ID3DXEffect* piEffect;
|
||||
|
||||
// corresponding tree view item
|
||||
HTREEITEM hTreeItem;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Singleton accessors
|
||||
static CDisplay s_cInstance;
|
||||
inline static CDisplay& Instance()
|
||||
{
|
||||
return s_cInstance;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Called during the render loop. Renders the scene (including the
|
||||
// HUD etc) in the current view mode
|
||||
int OnRender();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// called when the user selects another item in the "Display" tree
|
||||
// view the method determines the new view mode and performs all
|
||||
// required operations
|
||||
// \param p_hTreeItem Selected tree view item
|
||||
int OnSetup( HTREEITEM p_hTreeItem );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Variant 1: Render the full scene with the asset
|
||||
int RenderFullScene();
|
||||
|
||||
#if 0
|
||||
//------------------------------------------------------------------
|
||||
// Variant 2: Render only a part of the scene. One node to
|
||||
// be exact
|
||||
int RenderScenePart();
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Variant 3: Render a large sphere and map a given material on it
|
||||
int RenderMaterialView();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Variant 4: Render a flat plane, map a texture on it and
|
||||
// display the UV wire on it
|
||||
int RenderTextureView();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Fill the UI combobox with a list of all supported view modi
|
||||
//
|
||||
// The display modes are added in order
|
||||
int FillDisplayList( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Add a material and all sub textures to the display mode list
|
||||
// hRoot - Handle to the root of the tree view
|
||||
// iIndex - Material index
|
||||
int AddMaterialToDisplayList( HTREEITEM hRoot,
|
||||
unsigned int iIndex );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Add a texture to the display list
|
||||
// pcMat - material containing the texture
|
||||
// hTexture - Handle to the material tree item
|
||||
// szPath - Path to the texture
|
||||
// iUVIndex - UV index to be used for the texture
|
||||
// fBlendFactor - Blend factor to be used for the texture
|
||||
// eTextureOp - texture operation to be used for the texture
|
||||
int AddTextureToDisplayList( unsigned int iType,
|
||||
unsigned int iIndex,
|
||||
const aiString* szPath,
|
||||
HTREEITEM hFX,
|
||||
unsigned int iUVIndex = 0,
|
||||
const float fBlendFactor = 0.0f,
|
||||
aiTextureOp eTextureOp = aiTextureOp_Multiply,
|
||||
unsigned int iMesh = 0 );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Add a node to the display list
|
||||
// Recusrivly adds all subnodes as well
|
||||
// iIndex - Index of the node in the parent's child list
|
||||
// iDepth - Current depth of the node
|
||||
// pcNode - Node object
|
||||
// hRoot - Parent tree view node
|
||||
int AddNodeToDisplayList(
|
||||
unsigned int iIndex,
|
||||
unsigned int iDepth,
|
||||
aiNode* pcNode,
|
||||
HTREEITEM hRoot );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Add a mesh to the display list
|
||||
// iIndex - Index of the mesh in the scene's mesh list
|
||||
// hRoot - Parent tree view node
|
||||
int AddMeshToDisplayList(
|
||||
unsigned int iIndex,
|
||||
HTREEITEM hRoot );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Load the image list for the tree view item
|
||||
int LoadImageList( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Expand all nodes in the tree
|
||||
int ExpandTree();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Fill the UI combobox with a list of all supported animations
|
||||
// The animations are added in order
|
||||
int FillAnimList( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Clear the combox box containing the list of animations
|
||||
int ClearAnimList( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Clear the combox box containing the list of scenegraph items
|
||||
int ClearDisplayList( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Fill in the default statistics
|
||||
int FillDefaultStatistics( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Called by LoadAsset()
|
||||
// reset the class instance to the default values
|
||||
int Reset( void );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Replace the texture that is current selected with
|
||||
// a new texture
|
||||
int ReplaceCurrentTexture( const char* szPath );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Display the context menu (if there) for the specified tree item
|
||||
// hItem Valid tree view item handle
|
||||
int ShowTreeViewContextMenu( HTREEITEM hItem );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Event handling for pop-up menus displayed by th tree view
|
||||
int HandleTreeViewPopup( WPARAM wParam, LPARAM lParam );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Enable animation-related parts of the UI
|
||||
int EnableAnimTools( BOOL hm );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// setter for m_iViewMode
|
||||
inline void SetViewMode( unsigned int p_iNew )
|
||||
{
|
||||
this->m_iViewMode = p_iNew;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// getter for m_iViewMode
|
||||
inline unsigned int GetViewMode()
|
||||
{
|
||||
return m_iViewMode;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// change the texture view's zoom factor
|
||||
inline void SetTextureViewZoom( float f )
|
||||
{
|
||||
// FIX: Removed log(), seems to make more problems than it fixes
|
||||
this->m_fTextureZoom += f * 15;
|
||||
if( this->m_fTextureZoom < 0.05f )this->m_fTextureZoom = 0.05f;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// change the texture view's offset on the x axis
|
||||
inline void SetTextureViewOffsetX( float f )
|
||||
{
|
||||
this->m_vTextureOffset.x += f;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// change the texture view's offset on the y axis
|
||||
inline void SetTextureViewOffsetY( float f )
|
||||
{
|
||||
this->m_vTextureOffset.y += f;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// add a new texture to the list
|
||||
inline void AddTexture( const TextureInfo& info )
|
||||
{
|
||||
this->m_asTextures.push_back( info );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// add a new node to the list
|
||||
inline void AddNode( const NodeInfo& info )
|
||||
{
|
||||
this->m_asNodes.push_back( info );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// add a new mesh to the list
|
||||
inline void AddMesh( const MeshInfo& info )
|
||||
{
|
||||
this->m_asMeshes.push_back( info );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// add a new material to the list
|
||||
inline void AddMaterial( const MaterialInfo& info )
|
||||
{
|
||||
this->m_asMaterials.push_back( info );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// set the primary color of the checker pattern background
|
||||
inline void SetFirstCheckerColor( D3DXVECTOR4 c )
|
||||
{
|
||||
this->m_avCheckerColors[ 0 ] = c;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// set the secondary color of the checker pattern background
|
||||
inline void SetSecondCheckerColor( D3DXVECTOR4 c )
|
||||
{
|
||||
this->m_avCheckerColors[ 1 ] = c;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// get the primary color of the checker pattern background
|
||||
inline const D3DXVECTOR4* GetFirstCheckerColor() const
|
||||
{
|
||||
return &this->m_avCheckerColors[ 0 ];
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// get the secondary color of the checker pattern background
|
||||
inline const D3DXVECTOR4* GetSecondCheckerColor() const
|
||||
{
|
||||
return &this->m_avCheckerColors[ 1 ];
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Render a screen-filling square using the checker pattern shader
|
||||
int RenderPatternBG();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Render a given node in the scenegraph
|
||||
// piNode Node to be rendered
|
||||
// piMatrix Current transformation matrix
|
||||
// bAlpha Render alpha or opaque objects only?
|
||||
int RenderNode( aiNode* piNode, const aiMatrix4x4& piMatrix,
|
||||
bool bAlpha = false );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Setup the camera for the stereo view rendering mode
|
||||
int SetupStereoView();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Render the second view (for the right eye) in stereo mod
|
||||
// m - World matrix
|
||||
int RenderStereoView( const aiMatrix4x4& m );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Handle user input
|
||||
int HandleInput();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Handle user input for the texture viewer
|
||||
int HandleInputTextureView();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Handle user input if no asset is loaded
|
||||
int HandleInputEmptyScene();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Draw the HUD (call only if FPS mode isn't active)
|
||||
int DrawHUD();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Used by OnSetup().
|
||||
// Do everything necessary to switch to texture view mode
|
||||
int OnSetupTextureView( TextureInfo* pcNew );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Used by OnSetup().
|
||||
// Do everything necessary to switch to material view mode
|
||||
int OnSetupMaterialView( MaterialInfo* pcNew );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Used by OnSetup().
|
||||
// Do everything necessary to switch to node view mode
|
||||
int OnSetupNodeView( NodeInfo* pcNew );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Used by OnSetup().
|
||||
// Do everything necessary to switch back to normal view mode
|
||||
int OnSetupNormalView();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Used by HandleTreeViewPopup().
|
||||
int HandleTreeViewPopup2( WPARAM wParam, LPARAM lParam );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// Render skeleton
|
||||
int RenderSkeleton( aiNode* piNode, const aiMatrix4x4& piMatrix,
|
||||
const aiMatrix4x4& parent );
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// view mode
|
||||
unsigned int m_iViewMode;
|
||||
|
||||
// List of all textures in the display CB
|
||||
std::vector<TextureInfo> m_asTextures;
|
||||
|
||||
// current texture or NULL if no texture is active
|
||||
TextureInfo* m_pcCurrentTexture;
|
||||
|
||||
// List of all node in the display CB
|
||||
std::vector<NodeInfo> m_asNodes;
|
||||
|
||||
// List of all node in the display CB
|
||||
std::vector<MeshInfo> m_asMeshes;
|
||||
|
||||
// current Node or NULL if no Node is active
|
||||
NodeInfo* m_pcCurrentNode;
|
||||
|
||||
// List of all materials in the display CB
|
||||
std::vector<MaterialInfo> m_asMaterials;
|
||||
|
||||
// current material or NULL if no material is active
|
||||
MaterialInfo* m_pcCurrentMaterial;
|
||||
|
||||
// indices into the image list of the "display" tree view control
|
||||
unsigned int m_aiImageList[ 5 ]; /* = {0,1,2,3,4};*/
|
||||
|
||||
// Image list
|
||||
HIMAGELIST m_hImageList;
|
||||
|
||||
// Root node of the tree, "Model"
|
||||
HTREEITEM m_hRoot;
|
||||
|
||||
// Current zoom factor of the texture viewer
|
||||
float m_fTextureZoom;
|
||||
|
||||
// Current offset (in pixels) of the texture viewer
|
||||
aiVector2D m_vTextureOffset;
|
||||
|
||||
// Colors used to draw the checker pattern (for the
|
||||
// texture viewer as background )
|
||||
D3DXVECTOR4 m_avCheckerColors[ 2 ];
|
||||
|
||||
// View projection matrix
|
||||
aiMatrix4x4 mViewProjection;
|
||||
aiVector3D vPos;
|
||||
};
|
||||
|
||||
}
|
||||
#endif // AV_DISPLAY_H_INCLUDE
|
||||
Loading…
Add table
Add a link
Reference in a new issue