Springhead���_�E�����[�h���Ă���g����悤�ɂ���܂ł̗����������܂��D

\section{�_�E�����[�h}

Springhead�̃E�F�u�T�C�g\url{http://springhead.info/wiki/}����zip�A�[�J�C�u���_�E�����[�h�ł��܂��D
�������C�A�[�J�C�u�̍X�V�͕K�������p�ɂł͂���܂��� (�悭�Ȃ����Ƃł���) �̂ŁC�ŐV�̃R�[�h������ł��Ȃ��\��������܂��D
��ɍŐV�̃R�[�h���g�p�������l�́C���ɐ�������Subversion���|�W�g������R�[�h����肵�Ă��������D

\section{SVN������肷��}

Springhead��Subversion��p���ăo�[�W�����Ǘ����s���Ă��܂��D
���̕����̎��M���_��Springhead��Subversion���|�W�g����
\begin{align*}
\text{\url{http://springhead.info/spr2/Springhead2/trunk}}
\end{align*}
�ł��D
���|�W�g������̃R�[�h�̃_�E�����[�h�͔C�ӂ̃��[�U���s���܂����C
�R�[�h���R�~�b�g����ɂ͊J���҂Ƃ��ēo�^����Ă���K�v������܂��D

%Subversion�ɂ��R�[�h�̓�����@�ɂ��Ă�\url{http://springhead.info/wiki/}�ɂĉ������Ă��܂��̂ł�������Q�Ƃ��ĉ������D

\section{�J����}

Springhead�͏����n��ˑ��̎v�z�̂��ƂŊJ������Ă��܂��D
���̂��߁C�����I�ɂ�Windows, Max, Unix�Ȃǂ̑����̏����n�œ��삷��͂��ł��D
�������Ȃ���C�قƂ�ǂ̊J�������o�[��Windows���Visual Studio��p���ĊJ�����s���Ă��邽�߁C����ȊO�̊��Ŗ�薳�����삷��ۏ؂͎c�O�Ȃ��炠��܂��� (���������Ȃ��ł��傤)�D
���������āC����ł̓��[�U�[�ɂ�Windows + Visual Studio�Ƃ������ł̎g�p�𐄏����܂��D
Windows��Visual Studio�̃o�[�W�����ɂ��ẮCWindows 7/8/10, Visual Studio 2015�ł͖��Ȃ����삵�܂��D

\section{���C�u�����̃r���h}
\label{libbuild}

�ȉ��ł́CSpringhead��ۑ������f�B���N�g����\path{C:\Springhead2}�Ɖ��肵�Ęb��i�߂܂��D
Springhead����肵����C�܂����C�u�������r���h���܂��D
�������C�T���v���v���O�������r���h����ꍇ�Ɍ��肱���ł̍�Ƃ͕s�v�ł� (���C�u�����͎����I�ɍ쐬����܂�)�D

�܂��CVisual Studio�ňȉ��̃\�����[�V�����t�@�C�����J���ĉ������D
\begin{align*}
\text{\path{C:\Springhead2\src\Springhead14.0.sln}}
\end{align*}

\begin{center}\framebox{\footnotesize{%
\begin{minipage}{0.9\hsize}
�y�⑫�z �t�@�C���������̐����� Visual Studio �̃o�[�W�����ԍ��������Ă��܂��D
�������CVisual Studio 2010 ���Â��o�[�W�����ɂ��Ă̓��W���[�o�[�W�����ԍ��݂̂ł��D
���̑��̃\�����[�V�����t�@�C���C�v���W�F�N�g�t�@�C�������l�̋K���Ńi���o�����O���Ă���܂��D
Visual Studio 2013 ���ȑO�� Visual Studio ���g�p����ꍇ�ɂ͓K�X�ǂݑւ��Ă��������D
\end{minipage}
}}\end{center}


\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/libbuild.eps}
\end{center}
\caption{Building the library}
\label{fig_libbuild}
\end{figure}
�\�����[�V�������J������Fig.\,\ref{fig_libbuild}�Ɏ����悤��\url{Springhead}�v���W�F�N�g���r���h���Ă��������D
�r���h�ɐ���������\path{C:\Springhead2\lib\win32\}�܂���\path{C:\Springhead2\lib\win64\}�f�B���N�g���Ƀ��C�u�����t�@�C�����쐬�����͂��ł��D

Table\,\ref{table_solution_config} �Ɏ����悤�ɁC�r���h�̐ݒ育�ƂɈقȂ邢�����̍\�����p�ӂ���Ă��܂��D
���[�U�A�v���P�[�V�����̓s���ɍ��킹�Ďg�������Ă��������D

\begin{table}[t]
\caption{Build configurations}
\label{table_solution_config}
\begin{center}
\begin{tabular}{lll}
\toprule
�\����				& �r���h�ݒ�					& �쐬����郉�C�u�����t�@�C����	\\ \midrule
\url{Release}		& multithread, DLL				& \url{Springhead14.0\# \#.lib}	    \\
\url{Debug}			& multithread, Debug, DLL		& \url{Springhead14.0\# \#D.lib}	\\
\url{Trace}			& multithread, Debug, DLL		& \url{Springhead14.0\# \#T.lib}	\\ \bottomrule
\multicolumn{3}{l}
{\footnotesize{%
\vbox{\vbox to 1mm{}
      \hbox{�E \url{\# \#} �̓v���b�g�t�H�[����\�� \url{Win32} ���� \url{x86} �ƂȂ�܂��D}
      \hbox{�E \url{Trace} �\���Ƃ́C�t���[���|�C���^���t�� \url{Release} �\���̂��Ƃł��D}}}}
\end{tabular}
\end{center}
\end{table}

\begin{center}\framebox{\footnotesize{%
\begin{minipage}{0.9\hsize}
�y�⑫�z ���C�u�����t�@�C���̃r���h�ݒ�y�і��̂͂���܂ł̊J���o�܂ɂ�闝�R�ŁC���X���G�ɂȂ��Ă��܂��D
\begin{itemize}
\item{Visual Studio 2008 �ł́C���ׂĂ̍\���� Static Link �ݒ�ł��D}
\item{Visual Studio 2010 �ł́C \url{Release} / \url{Debug} �\���� Static Link �ݒ�,
\url{ReleaseDll} / \url{DebugDll} / \url{Trace} �\���� DLL �ݒ�ł��D}
\item{Visual Studio 2012 �ł́C���ׂĂ̍\���� DLL �ݒ�ł��D}
\item{Visual Studio 2010 �ȑO�̃o�[�W�����ł́C�v���b�g�t�H�[���� 32�r�b�g�̏ꍇ�C���C�u�����t�@�C������ \url{Win32} ���t���܂���D}
\item{Visual Studio 2010 �� \url{ReleaseDll} �\���y�� \url{DebugDll} �\���ł́C\url{.lib} �̑O�ɂ��ꂼ��
\url{M} �y�� \url{MD} ���t���܂��D}
\end{itemize}
\end{minipage}
}}\end{center}


\section{�T���v���v���O�����̃r���h}

�T���v���v���O�������r���h����ɂ�
\begin{align*}
\text{\path{C:\Springhead2\src\Samples\All14.0.sln}}
\end{align*}
���J���܂��D
�r���h�������T���v�����X�^�[�g�A�b�v�v���W�F�N�g�ɐݒ肵�C�r���h�C���s���Ă��������D

�c�O�Ȃ��Ƃł����C���ׂẴT���v���v���O���������Ȃ����삷���Ԃɂ͈ێ�����Ă��܂���D
\url{Physics/BoxStack}��\url{Physics/Joints}����r�I�ǂ������e�i���X����Ă��܂��̂Ŏ����Ă݂Ă��������D

���s����DLL��������Ȃ����߂ɃG���[���N���邩������܂���B
\begin{align*}
\text{\path{Springhead2\bin\win32}}
\text{\path{Springhead2\bin\win64}}
\end{align*}
��Path��ʂ��Ă��������B

\section{�A�v���P�[�V�����̍쐬}
\label{sec_create_application}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject1.eps}
\end{center}
\caption{Create new project}
\label{fig_newproject1}
\end{figure}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject2.eps}
\end{center}
\caption{Project configuration}
\label{fig_newproject2}
\end{figure}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject3.eps}
\end{center}
\caption{Create source file}
\label{fig_newproject3}
\end{figure}

Springhead���g���ĊȒP�ȃA�v���P�[�V�����v���O�������쐬���铹�؂�������܂��D
�ȉ��ł�Visual Studio 2013��z�肵�܂��D

\subsection*{�v���W�F�N�g�̍쐬}

�uVisual C++ Win32�v���W�F�N�g�v���쐬���܂��D�쐬����f�B���N�g���� \path{C:\Experiments} �Ɖ��肵�܂��D ���̃f�B���N�g���ɍ쐬����ꍇ�ɂ́C�v���W�F�N�g�Ɏw�肷��C���N���[�h�t�@�C���y�у��C�u�����t�@�C���̃p�X���C�ۑ����� Springhead �𐳂����Q�Ƃ���悤�ɒ��ӂ��Ă��������D �v���W�F�N�g���͍D���Ȗ��O��t���Ă��������D�A�v���P�[�V�����̐ݒ�Łu�R���\�[���A�v���P�[�V�����v��I�сC��̃v���W�F�N�g���`�F�b�N���܂��D

�v���W�F�N�g���쐬������u�v���W�F�N�g $>$ �V�������ڂ̒ǉ� $>$ C++�t�@�C��(.cpp)�v�Ƃ��ă\�[�X�t�@�C�����쐬���܂��D
�����ł͉���\url{main.cpp}�Ƃ��܂��D

\subsection*{�\�[�X�R�[�h�̕ҏW}

\begin{table}[t]
\caption{Simplest program code}
\label{table_simplest_code}
{\small
\begin{sourcecode}
#include <Springhead.h>
#include <Framework/SprFWApp.h>
using namespace Spr;

class MyApp : public FWApp{
public:
    virtual void Init(int argc = 0, char* argv[] = 0){
        FWApp::Init(argc, argv);

        PHSdkIf* phSdk = GetSdk()->GetPHSdk();
        PHSceneIf* phscene = GetSdk()->GetScene()->GetPHScene();
        CDBoxDesc bd;
        
        // �����쐬
        PHSolidIf* floor = phscene->CreateSolid();
        floor->SetDynamical(false);
        bd.boxsize = Vec3f(5.0f, 1.0f, 5.0f);
        floor->AddShape(phSdk->CreateShape(bd));
        floor->SetFramePosition(Vec3d(0, -1.0, 0));
    
        // �����쐬
        PHSolidIf* box = phscene->CreateSolid();
        bd.boxsize = Vec3f(0.2f, 0.2f, 0.2f);
        box->AddShape(phSdk->CreateShape(bd));
        box->SetFramePosition(Vec3d(0.0, 1.0, 0.0));

        GetSdk()->SetDebugMode(true);
    }
} app;

int main(int argc, char* argv[]){
    app.Init(argc, argv);
    app.StartMainLoop();
    return 0;
}
\end{sourcecode}
}
\end{table}

�쐬����\url{main.cpp}��Table\,\ref{table_simplest_code}�Ɏ����R�[�h����������ł��������D���ꂪSpringhead���g�p���� (�ق�) �ŏ��̃v���O�����R�[�h�ł��D

\section*{�v���W�F�N�g�ݒ�}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject4.eps}
\end{center}
\caption{Add include path}
\label{fig_newproject4}
\end{figure}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject5.eps}
\end{center}
\caption{Add library path}
\label{fig_newproject5}
\end{figure}

\begin{figure}[t]
\begin{center}
\begin{tabular}{c}
\includegraphics[width=.6\hsize]{fig/newproject6_truncate.eps} \\
\includegraphics[width=.6\hsize]{fig/newproject7_truncate.eps}
\end{tabular}
\end{center}
\caption{Specify library file}
\label{fig_newproject6}
\end{figure}

\begin{figure}[t]
\begin{center}
\includegraphics[width=.6\hsize]{fig/newproject8.eps}
\end{center}
\caption{Program running}
\label{fig_newproject8}
\end{figure}

�r���h����܂��ɂ������̃v���W�F�N�g�ݒ肪�K�v�ł��D
64�r�b�g�v���b�g�t�H�[�����g�p����ꍇ�ɂ́C�v���p�e�B�[�y�[�W�́u�\���}�l�[�W���[�v�Łu\url{x64}�v�v���b�g�t�H�[����V�K�쐬���đI�����Ă����܂��D
�܂��C\ref{libbuild} �Ő����������C�u�����̃r���h�͍ς�ł�����̂Ƃ��܂��D

�܂��v���W�F�N�g�̃v���p�e�B�y�[�W���J���C�\�����u���ׂĂ̍\���v�Ƃ��Ă��������D
���ɁuC/C++ $>$ �S�� $>$ �ǉ��̃C���N���[�h�f�B���N�g���v�ɁCFig.\,\ref{fig_newproject4}�̂悤��Springhead�̃C���N���[�h�t�@�C���ւ̃p�X���w�肵�Ă��������D
����ɁC�u�����J�[ $>$ �S�� $>$ �ǉ��̃��C�u�����f�B���N�g���v��Fig.\,\ref{fig_newproject5}�̂悤��Springhead�̃��C�u�����t�@�C���ւ̃p�X���w�肵�܂� (64�r�b�g�\���ڏꍇ�� \url{win32} �̑���� \url{win64} ���w�肵�܂�)�D

���x�͍\�����uDebug�v�ɂ��܂��D
�uC/C++ $>$ �R�[�h���� $>$ �����^�C�����C�u�����v���u�}���`�X���b�h �f�o�b�O DLL (\url{/MDd})�v�ɂ��܂��D
���Ɂu�����J�[ $>$ ���� $>$ �ǉ��̈ˑ��t�@�C���v��\url{Springhead14.0DWin32.lib}��ǉ����Ă��������D

�Ō�ɍ\�����uRelease�v�ɐ؂�ւ��ē��l�̐ݒ�����܂��D
�����^�C�����C�u�������u�}���`�X���b�h DLL (\url{/MD})�v�Ƃ��āC�ǉ��̈ˑ��t�@�C����\url{Springhead14.0Win32.lib}��ǉ����܂��D

\section*{�r���h�E���s}

�ȏ�ŏ��������ł��D�r���h(F7)���āC���s(F5)���Ă݂Ă��������D
Fig.\,\ref{fig_newproject8}�̂悤�ȉ�ʂ��o�Ă���ΐ����ł��D
