diff options
author | sanine <sanine.not@pm.me> | 2022-03-04 10:47:15 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2022-03-04 10:47:15 -0600 |
commit | 058f98a63658dc1a2579826ba167fd61bed1e21f (patch) | |
tree | bcba07a1615a14d943f3af3f815a42f3be86b2f3 /src/mesh/assimp-master/tools/assimp_view/assimp_view.h | |
parent | 2f8028ac9e0812cb6f3cbb08f0f419e4e717bd22 (diff) |
add assimp submodule
Diffstat (limited to 'src/mesh/assimp-master/tools/assimp_view/assimp_view.h')
-rw-r--r-- | src/mesh/assimp-master/tools/assimp_view/assimp_view.h | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/src/mesh/assimp-master/tools/assimp_view/assimp_view.h b/src/mesh/assimp-master/tools/assimp_view/assimp_view.h new file mode 100644 index 0000000..cbcee3c --- /dev/null +++ b/src/mesh/assimp-master/tools/assimp_view/assimp_view.h @@ -0,0 +1,270 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2022, 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_MAIN_H_INCLUDED) +#define AV_MAIN_H_INCLUDED + +#define AI_SHADER_COMPILE_FLAGS D3DXSHADER_USE_LEGACY_D3DX9_31_DLL + +// Because Dx headers include windef.h with min/max redefinition +#define NOMINMAX + +// include resource definitions +#include "resource.h" + +#include <assert.h> +#include <malloc.h> +#include <memory.h> +#include <stdio.h> +#include <stdlib.h> +#include <tchar.h> +#include <time.h> + +// Include ASSIMP headers (XXX: do we really need all of them?) +#include <assimp/ai_assert.h> +#include <assimp/cfileio.h> +#include <assimp/cimport.h> +#include <assimp/postprocess.h> +#include <assimp/scene.h> +#include <assimp/DefaultLogger.hpp> +#include <assimp/IOStream.hpp> +#include <assimp/IOSystem.hpp> +#include <assimp/Importer.hpp> +#include <assimp/LogStream.hpp> + +#include "Material/MaterialSystem.h" // aiMaterial class +#include <assimp/StringComparison.h> // ASSIMP_stricmp and ASSIMP_strincmp + +#include <time.h> + +// default movement speed +#define MOVE_SPEED 3.f + +#include "AssetHelper.h" +#include "Background.h" +#include "Camera.h" +#include "Display.h" +#include "LogDisplay.h" +#include "LogWindow.h" +#include "MaterialManager.h" +#include "MeshRenderer.h" +#include "RenderOptions.h" +#include "Shaders.h" + +// outside of namespace, to help Intellisense and solve boost::metatype_stuff_miracle +#include "AnimEvaluator.h" +#include "SceneAnimator.h" + +namespace AssimpView { + +//------------------------------------------------------------------------------- +// Function prototypes +//------------------------------------------------------------------------------- +int InitD3D(void); +int ShutdownD3D(void); +int CreateDevice(bool p_bMultiSample, bool p_bSuperSample, bool bHW = true); +int CreateDevice(void); +int ShutdownDevice(void); +int GetProjectionMatrix(aiMatrix4x4 &p_mOut); +int LoadAsset(void); +int CreateAssetData(void); +int DeleteAssetData(bool bNoMaterials = false); +int ScaleAsset(void); +int DeleteAsset(void); +int SetupFPSView(); + +aiVector3D GetCameraMatrix(aiMatrix4x4 &p_mOut); +int CreateMaterial(AssetHelper::MeshHelper *pcMesh, const aiMesh *pcSource); + +void HandleMouseInputFPS(void); +void HandleMouseInputLightRotate(void); +void HandleMouseInputLocal(void); +void HandleKeyboardInputFPS(void); +void HandleMouseInputLightIntensityAndColor(void); +void HandleMouseInputSkyBox(void); +void HandleKeyboardInputTextureView(void); +void HandleMouseInputTextureView(void); + +//------------------------------------------------------------------------------- +// +// Dialog procedure for the progress bar window +// +//------------------------------------------------------------------------------- +INT_PTR CALLBACK ProgressMessageProc(HWND hwndDlg, UINT uMsg, + WPARAM wParam, LPARAM lParam); + +//------------------------------------------------------------------------------- +// Main message procedure of the application +// +// The function handles all incoming messages for the main window. +// However, if does not directly process input commands. +// NOTE: Due to the impossibility to process WM_CHAR messages in dialogs +// properly the code for all hotkeys has been moved to the WndMain +//------------------------------------------------------------------------------- +INT_PTR CALLBACK MessageProc(HWND hwndDlg, UINT uMsg, + WPARAM wParam, LPARAM lParam); + +//------------------------------------------------------------------------------- +// +// Dialog procedure for the about dialog +// +//------------------------------------------------------------------------------- +INT_PTR CALLBACK AboutMessageProc(HWND hwndDlg, UINT uMsg, + WPARAM wParam, LPARAM lParam); + +//------------------------------------------------------------------------------- +// +// Dialog procedure for the help dialog +// +//------------------------------------------------------------------------------- +INT_PTR CALLBACK HelpDialogProc(HWND hwndDlg, UINT uMsg, + WPARAM wParam, LPARAM lParam); + +//------------------------------------------------------------------------------- +// Handle command line parameters +// +// The function loads an asset specified on the command line as first argument +// Other command line parameters are not handled +//------------------------------------------------------------------------------- +void HandleCommandLine(char *p_szCommand); + +//------------------------------------------------------------------------------- +template <class type, class intype> +type clamp(intype in) { + // for unsigned types only ... + intype mask = (0x1u << (sizeof(type) * 8)) - 1; + return (type)std::max((intype)0, std::min(in, mask)); +} + +//------------------------------------------------------------------------------- +// Position of the cursor relative to the 3ds max' like control circle +//------------------------------------------------------------------------------- +enum EClickPos { + // The click was inside the inner circle (x,y axis) + EClickPos_Circle, + // The click was inside one of the vertical snap-ins + EClickPos_CircleVert, + // The click was inside onf of the horizontal snap-ins + EClickPos_CircleHor, + // the cklick was outside the circle (z-axis) + EClickPos_Outside +}; + +#if (!defined AI_VIEW_CAPTION_BASE) +#define AI_VIEW_CAPTION_BASE "Open Asset Import Library : Viewer " +#endif // !! AI_VIEW_CAPTION_BASE + +//------------------------------------------------------------------------------- +// Evil globals +//------------------------------------------------------------------------------- +extern HINSTANCE g_hInstance /*= NULL*/; +extern HWND g_hDlg /*= NULL*/; +extern IDirect3D9 *g_piD3D /*= NULL*/; +extern IDirect3DDevice9 *g_piDevice /*= NULL*/; +extern IDirect3DVertexDeclaration9 *gDefaultVertexDecl /*= NULL*/; +extern double g_fFPS /*= 0.0f*/; +extern char g_szFileName[MAX_PATH]; +extern ID3DXEffect *g_piDefaultEffect /*= NULL*/; +extern ID3DXEffect *g_piNormalsEffect /*= NULL*/; +extern ID3DXEffect *g_piPassThroughEffect /*= NULL*/; +extern ID3DXEffect *g_piPatternEffect /*= NULL*/; +extern bool g_bMousePressed /*= false*/; +extern bool g_bMousePressedR /*= false*/; +extern bool g_bMousePressedM /*= false*/; +extern bool g_bMousePressedBoth /*= false*/; +extern float g_fElpasedTime /*= 0.0f*/; +extern D3DCAPS9 g_sCaps; +extern bool g_bLoadingFinished /*= false*/; +extern HANDLE g_hThreadHandle /*= NULL*/; +extern float g_fWheelPos /*= -10.0f*/; +extern bool g_bLoadingCanceled /*= false*/; +extern IDirect3DTexture9 *g_pcTexture /*= NULL*/; + +extern aiMatrix4x4 g_mWorld; +extern aiMatrix4x4 g_mWorldRotate; +extern aiVector3D g_vRotateSpeed /*= aiVector3D(0.5f,0.5f,0.5f)*/; + +extern aiVector3D g_avLightDirs[1] /* = + { aiVector3D(-0.5f,0.6f,0.2f) , + aiVector3D(-0.5f,0.5f,0.5f)} */ + ; + +extern POINT g_mousePos /*= {0,0};*/; +extern POINT g_LastmousePos /*= {0,0}*/; +extern bool g_bFPSView /*= false*/; +extern bool g_bInvert /*= false*/; +extern EClickPos g_eClick; +extern unsigned int g_iCurrentColor /*= 0*/; + +// NOTE: The light intensity is separated from the color, it can +// directly be manipulated using the middle mouse button. +// When the user chooses a color from the palette the intensity +// is reset to 1.0 +// index[2] is the ambient color +extern float g_fLightIntensity /*=0.0f*/; +extern D3DCOLOR g_avLightColors[3]; + +extern RenderOptions g_sOptions; +extern Camera g_sCamera; +extern AssetHelper *g_pcAsset /*= NULL*/; + +// +// Contains the mask image for the HUD +// (used to determine the position of a click) +// +// The size of the image is identical to the size of the main +// HUD texture +// +extern unsigned char *g_szImageMask /*= NULL*/; + +extern float g_fACMR /*= 3.0f*/; +extern IDirect3DQuery9 *g_piQuery; + +extern bool g_bPlay /*= false*/; + +extern double g_dCurrent; +extern float g_smoothAngle /*= 80.f*/; + +extern unsigned int ppsteps, ppstepsdefault; +extern bool nopointslines; +} // namespace AssimpView + +#endif // !! AV_MAIN_H_INCLUDED |