⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 triangleview.cpp

📁 此书为Visual C++ 高级编程技术OpenGL篇
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// TriangleView.cpp : implementation of the CTriangleView class
#include "stdafx.h"
#include "Triangle.h"

#include "MainFrm.h"
#include "TriangleDoc.h"
#include "TriangleView.h"
#include "body.h"
#include "NameDlg.h"

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <gl/glaux.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//High light Test
GLfloat lightangle[2] = {0.0f, 0.0f};
GLfloat color[4] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat zero[4] = {0.0f, 0.0f, 0.0f, 1.0f};
GLfloat one[4] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat mat_specular[4] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat low_shininess[ ] = {5.0}; 

GLfloat lightpos[4] = {0.0f, 0.0f, -1.0f, 0.0f};
GLboolean lightchanged[2] = {GL_TRUE, GL_TRUE};
enum{UPDATE_OGL, UPDATE_TEX};

// Forward declarations
void GLResize(GLsizei w, GLsizei h);
void GLRenderScene(void *pData);
void GLSetupRC(void *pData);

/////////////////////////////////////////////////////////////////////////////
// CTriangleView

IMPLEMENT_DYNCREATE(CTriangleView, CView)

BEGIN_MESSAGE_MAP(CTriangleView, CView)
	//{{AFX_MSG_MAP(CTriangleView)
	ON_WM_SIZE()
	ON_WM_QUERYNEWPALETTE()
	ON_WM_PALETTECHANGED()
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_WM_ERASEBKGND()
	ON_WM_KEYDOWN()
	ON_WM_TIMER()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_RBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_RBUTTONUP()
	ON_COMMAND(ID_TRACKBALLMODE, OnTrackballmode)
	ON_UPDATE_COMMAND_UI(ID_TRACKBALLMODE, OnUpdateTrackballmode)
	ON_COMMAND(ID_TRANSLATEMODE, OnTranslatemode)
	ON_UPDATE_COMMAND_UI(ID_TRANSLATEMODE, OnUpdateTranslatemode)
	ON_COMMAND(ID_DRIVEMODE, OnDrivemode)
	ON_UPDATE_COMMAND_UI(ID_DRIVEMODE, OnUpdateDrivemode)
	ON_COMMAND(ID_SELECTBODYMODE, OnSelectbodymode)
	ON_UPDATE_COMMAND_UI(ID_SELECTBODYMODE, OnUpdateSelectbodymode)
	ON_COMMAND(ID_TRANSLATEBODYMODE, OnTranslatebodymode)
	ON_UPDATE_COMMAND_UI(ID_TRANSLATEBODYMODE, OnUpdateTranslatebodymode)
	ON_COMMAND(ID_CONSTRAIN_XMODE, OnConstrainXmode)
	ON_UPDATE_COMMAND_UI(ID_CONSTRAIN_XMODE, OnUpdateConstrainXmode)
	ON_COMMAND(ID_CONSTRAIN_YMODE, OnConstrainYmode)
	ON_UPDATE_COMMAND_UI(ID_CONSTRAIN_YMODE, OnUpdateConstrainYmode)
	ON_COMMAND(ID_CONSTRAIN_ZMODE, OnConstrainZmode)
	ON_UPDATE_COMMAND_UI(ID_CONSTRAIN_ZMODE, OnUpdateConstrainZmode)
	ON_COMMAND(ID_MOTIONFILEOPEN, OnMotionfileopen)
	ON_COMMAND(ID_MOTIONFILESAVE, OnMotionfilesave)
	ON_COMMAND(ID_RESETSYSTEM, OnResetsystem)
	ON_COMMAND(ID_RESETCURRENTFRAME, OnResetcurrentframe)
	ON_COMMAND(ID_RESETCURRENTSELECTBODY, OnResetcurrentselectbody)
	ON_COMMAND(ID_RESETCAMERA, OnResetcamera)
	ON_COMMAND(ID_COPYFRAME, OnCopyframe)
	ON_COMMAND(ID_PASTEDATA, OnPastedata)
	ON_COMMAND(ID_VIEWMODE1, OnViewmode1)
	ON_UPDATE_COMMAND_UI(ID_VIEWMODE1, OnUpdateViewmode1)
	ON_COMMAND(ID_VIEWMODE2, OnViewmode2)
	ON_UPDATE_COMMAND_UI(ID_VIEWMODE2, OnUpdateViewmode2)
	ON_COMMAND(ID_VIEWMODE3, OnViewmode3)
	ON_UPDATE_COMMAND_UI(ID_VIEWMODE3, OnUpdateViewmode3)
	ON_COMMAND(ID_GHOSTMODE, OnGhostmode)
	ON_UPDATE_COMMAND_UI(ID_GHOSTMODE, OnUpdateGhostmode)
	ON_COMMAND(ID_REFRESHSCREEN, OnRefreshscreen)
	ON_COMMAND(ID_BOUNDINGBOXMODE, OnBoundingboxmode)
	ON_UPDATE_COMMAND_UI(ID_BOUNDINGBOXMODE, OnUpdateBoundingboxmode)
	ON_COMMAND(ID_SOLIDMODE, OnSolidmode)
	ON_UPDATE_COMMAND_UI(ID_SOLIDMODE, OnUpdateSolidmode)
	ON_COMMAND(ID_BOUNDINGBOXANDSOLIDMODE, OnBoundingboxandsolidmode)
	ON_UPDATE_COMMAND_UI(ID_BOUNDINGBOXANDSOLIDMODE, OnUpdateBoundingboxandsolidmode)
	ON_COMMAND(ID_SCENEMODEL, OnScenemodel)
	ON_UPDATE_COMMAND_UI(ID_SCENEMODEL, OnUpdateScenemodel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTriangleView construction/destruction

CTriangleView::CTriangleView()
{
	body_id = BODY;

	m_fHeight = 0.0f;
	vecSetValue(m_vTrackBallOffset, 0.0f, 0.0f, 0.0f);
	vecSetValue(m_vTranslateOffset, 0.0f, 0.0f, 0.0f);
	//Manipulate Mode
	m_iManipulateMode = TRACKBALL;
	//View Mode
	m_iViewMode = VIEWMODE_1;
	//Ghost Mode
	m_bGhostMode = FALSE;
	//Scene Mode
	m_bSceneMode = FALSE;
	//Bounding Box Mode
	m_iBoundingBoxMode = SOLID;

	//Constrain Mode
	m_bConstrainX = FALSE;
	m_bConstrainY = FALSE;
	m_bConstrainZ = FALSE;

	//Left Mouse Button
	m_iLeftCurrentX = 0;
	m_iLeftCurrentY = 0;
	m_iLeftOldX = 0;
	m_iLeftOldY = 0;
	m_bLeftCapture = FALSE;

	//Right Mouse Button
	m_iRightCurrentX = 0;
	m_iRightCurrentY = 0;
	m_iRightOldX = 0;
	m_iRightOldY = 0;
	m_bRightCapture = FALSE;

	m_iTotalGroup = 0;

	InitBody();
	InitTempFrame();
	InitCollideDetection();
}

CTriangleView::~CTriangleView()
{
	LPANIMATION current;
	LPANIMATION last;
	LPANIMATION die;

	current = &Anim;
	last = &Anim;
	do
	{
		if(current->m_iID != 0)
		{
			die = current;
			current = current->next;
			DelGroup(die, FALSE);
		}else
		{
			current = current->next;
		}
	}//do-while
	while(current != last);
}

void CTriangleView::InitBody(void)
{
	body[LOWER_BODY].id = LOWER_BODY;
	body[LOWER_BODY].b_draw = TRUE;
	body[LOWER_BODY].b_scale = TRUE;
	body[LOWER_BODY].b_tran = FALSE;
	vecSetValue(body[LOWER_BODY].scale, 0.275f, 0.153f, 0.152f);

	body[LEFT_LEG].id = LEFT_LEG;
	body[LEFT_LEG].b_tran = TRUE;
	body[LEFT_LEG].b_scale = FALSE;
	body[LEFT_LEG].b_draw = FALSE;
	vecSetValue(body[LEFT_LEG].translate, -0.178f, 0.0f, 0.0f);

	body[RIGHT_LEG].id = RIGHT_LEG;
	body[RIGHT_LEG].b_tran = TRUE;
	body[RIGHT_LEG].b_scale = FALSE;
	body[RIGHT_LEG].b_draw = FALSE;
	vecSetValue(body[RIGHT_LEG].translate, 0.178f, 0.0f, 0.0f);

	body[LEFT_UPPER_LEG].id = LEFT_UPPER_LEG;
	body[LEFT_UPPER_LEG].b_tran = TRUE;
	body[LEFT_UPPER_LEG].b_scale = TRUE;
	body[LEFT_UPPER_LEG].b_draw = TRUE;
	vecSetValue(body[LEFT_UPPER_LEG].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[LEFT_UPPER_LEG].scale, 0.141f, 0.425f, 0.141f);

	body[RIGHT_UPPER_LEG].id = RIGHT_UPPER_LEG;
	body[RIGHT_UPPER_LEG].b_tran = TRUE;
	body[RIGHT_UPPER_LEG].b_scale = TRUE;
	body[RIGHT_UPPER_LEG].b_draw = TRUE;
	vecSetValue(body[RIGHT_UPPER_LEG].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[RIGHT_UPPER_LEG].scale, 0.141f, 0.425f, 0.141f);

	body[LEFT_KNEE].id = LEFT_KNEE;
	body[LEFT_KNEE].b_tran = TRUE;
	body[LEFT_KNEE].b_scale = TRUE;
	body[LEFT_KNEE].b_draw = TRUE;
	vecSetValue(body[LEFT_KNEE].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[LEFT_KNEE].scale, 0.05f, 0.05f, 0.05f);

	body[RIGHT_KNEE].id = RIGHT_KNEE;
	body[RIGHT_KNEE].b_tran = TRUE;
	body[RIGHT_KNEE].b_scale = TRUE;
	body[RIGHT_KNEE].b_draw = TRUE;
	vecSetValue(body[RIGHT_KNEE].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[RIGHT_KNEE].scale, 0.05f, 0.05f, 0.05f);

	body[LEFT_LOWER_LEG].id = LEFT_LOWER_LEG;
	body[LEFT_LOWER_LEG].b_tran = TRUE;
	body[LEFT_LOWER_LEG].b_scale = TRUE;
	body[LEFT_LOWER_LEG].b_draw = TRUE;
	vecSetValue(body[LEFT_LOWER_LEG].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[LEFT_LOWER_LEG].scale, 0.141f, 0.425f, 0.141f);

	body[RIGHT_LOWER_LEG].id = RIGHT_LOWER_LEG;
	body[RIGHT_LOWER_LEG].b_tran = TRUE;
	body[RIGHT_LOWER_LEG].b_scale = TRUE;
	body[RIGHT_LOWER_LEG].b_draw = TRUE;
	vecSetValue(body[RIGHT_LOWER_LEG].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[RIGHT_LOWER_LEG].scale, 0.141f, 0.425f, 0.141f);

	body[LEFT_ANKLE].id = LEFT_ANKLE;
	body[LEFT_ANKLE].b_tran = TRUE;
	body[LEFT_ANKLE].b_scale = TRUE;
	body[LEFT_ANKLE].b_draw = TRUE;
	vecSetValue(body[LEFT_ANKLE].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[LEFT_ANKLE].scale, 0.04f, 0.04f, 0.04f);

	body[RIGHT_ANKLE].id = RIGHT_ANKLE;
	body[RIGHT_ANKLE].b_tran = TRUE;
	body[RIGHT_ANKLE].b_scale = TRUE;
	body[RIGHT_ANKLE].b_draw = TRUE;
	vecSetValue(body[RIGHT_ANKLE].translate, 0.0f, -0.425f, 0.0f);
	vecSetValue(body[RIGHT_ANKLE].scale, 0.04f, 0.04f, 0.04f);

	body[LEFT_FOOT].id = LEFT_FOOT;
	body[LEFT_FOOT].b_tran = TRUE;
	body[LEFT_FOOT].b_scale = TRUE;
	body[LEFT_FOOT].b_draw = TRUE;
	vecSetValue(body[LEFT_FOOT].translate, 0.0f, -0.05f, -0.12f);
	vecSetValue(body[LEFT_FOOT].scale, 0.08f, 0.05f, 0.19f);

	body[RIGHT_FOOT].id = RIGHT_FOOT;
	body[RIGHT_FOOT].b_tran = TRUE;
	body[RIGHT_FOOT].b_scale = TRUE;
	body[RIGHT_FOOT].b_draw = TRUE;
	vecSetValue(body[RIGHT_FOOT].translate, 0.0f, -0.05f, -0.12f);
	vecSetValue(body[RIGHT_FOOT].scale, 0.08f, 0.05f, 0.19f);

	body[UPPER_BODY].id = UPPER_BODY;
	body[UPPER_BODY].b_tran = TRUE;
	body[UPPER_BODY].b_scale = TRUE;
	body[UPPER_BODY].b_draw = TRUE;
	vecSetValue(body[UPPER_BODY].translate, 0.0f, 0.62f, 0.0f);
	vecSetValue(body[UPPER_BODY].scale, 0.306f, 0.5f, 0.21f);

	body[SHOULDER].id = SHOULDER;
	body[SHOULDER].b_tran = TRUE;
	body[SHOULDER].b_scale = TRUE;
	body[SHOULDER].b_draw = TRUE;
	vecSetValue(body[SHOULDER].translate, 0.0f, 0.37f, 0.0f);
	vecSetValue(body[SHOULDER].scale, 0.45f, 0.12f, 0.153f);

	body[LEFT_ARM].id = LEFT_ARM;
	body[LEFT_ARM].b_tran = TRUE;
	body[LEFT_ARM].b_scale = FALSE;
	body[LEFT_ARM].b_draw = FALSE;
	vecSetValue(body[LEFT_ARM].translate, -0.45f, 0.0f, 0.0f);

	body[RIGHT_ARM].id = RIGHT_ARM;
	body[RIGHT_ARM].b_tran = TRUE;
	body[RIGHT_ARM].b_scale = FALSE;
	body[RIGHT_ARM].b_draw = FALSE;
	vecSetValue(body[RIGHT_ARM].translate, 0.45f, 0.0f, 0.0f);

	body[LEFT_UPPER_ARM].id = LEFT_UPPER_ARM;
	body[LEFT_UPPER_ARM].b_tran = TRUE;
	body[LEFT_UPPER_ARM].b_scale = TRUE;
	body[LEFT_UPPER_ARM].b_draw = TRUE;
	vecSetValue(body[LEFT_UPPER_ARM].translate, 0.0f, -0.275f, 0.0f);
	vecSetValue(body[LEFT_UPPER_ARM].scale, 0.09f, 0.275f, 0.09f);

	body[RIGHT_UPPER_ARM].id = RIGHT_UPPER_ARM;
	body[RIGHT_UPPER_ARM].b_tran = TRUE;
	body[RIGHT_UPPER_ARM].b_scale = TRUE;
	body[RIGHT_UPPER_ARM].b_draw = TRUE;
	vecSetValue(body[RIGHT_UPPER_ARM].translate, 0.0f, -0.275f, 0.0f);
	vecSetValue(body[RIGHT_UPPER_ARM].scale, 0.09f, 0.275f, 0.09f);

	body[LEFT_ELBOW].id = LEFT_ELBOW;
	body[LEFT_ELBOW].b_tran = TRUE;
	body[LEFT_ELBOW].b_scale = TRUE;
	body[LEFT_ELBOW].b_draw = TRUE;
	vecSetValue(body[LEFT_ELBOW].translate, 0.0f, -0.275f, 0.0f);
	vecSetValue(body[LEFT_ELBOW].scale, 0.05f, 0.05f, 0.05f);

	body[RIGHT_ELBOW].id = RIGHT_ELBOW;
	body[RIGHT_ELBOW].b_tran = TRUE;
	body[RIGHT_ELBOW].b_scale = TRUE;
	body[RIGHT_ELBOW].b_draw = TRUE;
	vecSetValue(body[RIGHT_ELBOW].translate, 0.0f, -0.275f, 0.0f);
	vecSetValue(body[RIGHT_ELBOW].scale, 0.05f, 0.05f, 0.05f);

	body[LEFT_LOWER_ARM].id = LEFT_LOWER_ARM;
	body[LEFT_LOWER_ARM].b_tran = TRUE;
	body[LEFT_LOWER_ARM].b_scale = TRUE;
	body[LEFT_LOWER_ARM].b_draw = TRUE;
	vecSetValue(body[LEFT_LOWER_ARM].translate, 0.0f, -0.25f, 0.0f);
	vecSetValue(body[LEFT_LOWER_ARM].scale, 0.08f, 0.25f, 0.08f);

	body[RIGHT_LOWER_ARM].id = RIGHT_LOWER_ARM;
	body[RIGHT_LOWER_ARM].b_tran = TRUE;
	body[RIGHT_LOWER_ARM].b_scale = TRUE;
	body[RIGHT_LOWER_ARM].b_draw = TRUE;
	vecSetValue(body[RIGHT_LOWER_ARM].translate, 0.0f, -0.25f, 0.0f);
	vecSetValue(body[RIGHT_LOWER_ARM].scale, 0.08f, 0.25f, 0.08f);

	body[LEFT_WRIST].id = LEFT_WRIST;
	body[LEFT_WRIST].b_tran = TRUE;
	body[LEFT_WRIST].b_scale = TRUE;
	body[LEFT_WRIST].b_draw = TRUE;
	vecSetValue(body[LEFT_WRIST].translate, 0.0f, -0.25f, 0.0f);
	vecSetValue(body[LEFT_WRIST].scale, 0.04f, 0.04f, 0.04f);

	body[RIGHT_WRIST].id = RIGHT_WRIST;
	body[RIGHT_WRIST].b_tran = TRUE;
	body[RIGHT_WRIST].b_scale = TRUE;
	body[RIGHT_WRIST].b_draw = TRUE;
	vecSetValue(body[RIGHT_WRIST].translate, 0.0f, -0.25f, 0.0f);
	vecSetValue(body[RIGHT_WRIST].scale, 0.04f, 0.04f, 0.04f);

	body[LEFT_HAND].id = LEFT_HAND;
	body[LEFT_HAND].b_tran = TRUE;
	body[LEFT_HAND].b_scale = TRUE;
	body[LEFT_HAND].b_draw = TRUE;
	vecSetValue(body[LEFT_HAND].translate, 0.0f, -0.155f, 0.0f);
	vecSetValue(body[LEFT_HAND].scale, 0.052f, 0.155f, 0.091f);

	body[RIGHT_HAND].id = RIGHT_HAND;
	body[RIGHT_HAND].b_tran = TRUE;
	body[RIGHT_HAND].b_scale = TRUE;
	body[RIGHT_HAND].b_draw = TRUE;
	vecSetValue(body[RIGHT_HAND].translate, 0.0f, -0.155f, 0.0f);
	vecSetValue(body[RIGHT_HAND].scale, 0.052f, 0.155f, 0.091f);

	body[HEAD].id = HEAD;
	body[HEAD].b_tran = TRUE;
	body[HEAD].b_scale = TRUE;
	body[HEAD].b_draw = TRUE;
	vecSetValue(body[HEAD].translate, 0.0f, 0.4f, 0.0f);
	vecSetValue(body[HEAD].scale, 0.2f, 0.3f, 0.23f);	
}

void CTriangleView::InitAnim(void)
{
	m_iTotalGroup = 1;
	m_iPlayCount = 0;
	m_iPlaySpeed = 0;
	m_bPlay = FALSE;

	m_pCurrentAnim = &Anim;

	Anim.next = Anim.prev = &Anim;
	strcpy(Anim.name, "Default");

	Anim.m_iID = 0;

	Anim.m_iTotalFrame = 1;
	Anim.m_iCurrentFrame = 1;
	Anim.m_fBaseHeight = 0.0f;
	Anim.FrameList.next = Anim.FrameList.prev = &Anim.FrameList;
	Anim.FrameList.m_iFrame = 1;
	Anim.FrameList.m_fHeadX = 0.0f;
	Anim.FrameList.m_fHeadY = 0.0f;
	Anim.FrameList.m_fShoulderX = 0.0f;
	Anim.FrameList.m_fShoulderY = 0.0f;
	Anim.FrameList.m_fLeftUpperArmX = 0.0f;
	Anim.FrameList.m_fLeftUpperArmY = 0.0f;
	Anim.FrameList.m_fLeftLowerArmX = 0.0f;
	Anim.FrameList.m_fLeftLowerArmY = 0.0f;
	Anim.FrameList.m_fLeftHandX = 0.0f;
	Anim.FrameList.m_fLeftHandY = 0.0f;
	Anim.FrameList.m_fRightUpperArmX = 0.0f;
	Anim.FrameList.m_fRightUpperArmY = 0.0f;
	Anim.FrameList.m_fRightLowerArmX = 0.0f;
	Anim.FrameList.m_fRightLowerArmY = 0.0f;
	Anim.FrameList.m_fRightHandX = 0.0f;
	Anim.FrameList.m_fRightHandY = 0.0f;
	Anim.FrameList.m_fUpperBodyX = 0.0f;
	Anim.FrameList.m_fUpperBodyY = 0.0f;
	Anim.FrameList.m_fLowerBodyX = 0.0f;
	Anim.FrameList.m_fLowerBodyY = 0.0f;
	Anim.FrameList.m_fLeftUpperLegX = 0.0f;
	Anim.FrameList.m_fLeftUpperLegY = 0.0f;
	Anim.FrameList.m_fLeftLowerLegX = 0.0f;
	Anim.FrameList.m_fLeftLowerLegY = 0.0f;
	Anim.FrameList.m_fLeftFootX = 0.0f;
	Anim.FrameList.m_fLeftFootY = 0.0f;
	Anim.FrameList.m_fRightUpperLegX = 0.0f;
	Anim.FrameList.m_fRightUpperLegY = 0.0f;
	Anim.FrameList.m_fRightLowerLegX = 0.0f;
	Anim.FrameList.m_fRightLowerLegY = 0.0f;
	Anim.FrameList.m_fRightFootX = 0.0f;
	Anim.FrameList.m_fRightFootY = 0.0f;
	Anim.FrameList.m_fTranslateY = 0.0f;
}

void CTriangleView::SetBoundingBox(vector *pbox, GLfloat x, GLfloat y, GLfloat z)
{
	pbox[0][X] = x;
	pbox[0][Y] = y;
	pbox[0][Z] = z;

	pbox[1][X] = x;
	pbox[1][Y] = -y;
	pbox[1][Z] = z;

	pbox[2][X] = -x;
	pbox[2][Y] = -y;
	pbox[2][Z] = z;

	pbox[3][X] = -x;
	pbox[3][Y] = y;
	pbox[3][Z] = z;

	pbox[4][X] = x;
	pbox[4][Y] = y;
	pbox[4][Z] = -z;

	pbox[5][X] = x;
	pbox[5][Y] = -y;
	pbox[5][Z] = -z;

	pbox[6][X] = -x;
	pbox[6][Y] = -y;
	pbox[6][Z] = -z;

	pbox[7][X] = -x;
	pbox[7][Y] = y;
	pbox[7][Z] = -z;
}

void CTriangleView::InitScene(void)
{
	SetBoundingBox(scene, 3.0f, 0.2f, 3.0f);
}

void CTriangleView::InitBodyBoundingBox(void)
{
	SetBoundingBox(lower_body_box, 0.275f, 0.153f, 0.152f);
	SetBoundingBox(left_upper_leg_box, 0.141f, 0.425f, 0.141f);
	SetBoundingBox(right_upper_leg_box, 0.141f, 0.425f, 0.141f);
	SetBoundingBox(left_lower_leg_box, 0.141f, 0.425f, 0.141f);
	SetBoundingBox(right_lower_leg_box, 0.141f, 0.425f, 0.141f);
	SetBoundingBox(left_foot_box, 0.08f, 0.05f, 0.19f);
	SetBoundingBox(right_foot_box, 0.08f, 0.05f, 0.19f);

	SetBoundingBox(upper_body_box, 0.306f, 0.5f, 0.21f);
	SetBoundingBox(shoulder_box, 0.45f, 0.12f, 0.153f);
	SetBoundingBox(head_box, 0.2f, 0.3f, 0.23f);
	SetBoundingBox(left_upper_arm_box, 0.09f, 0.275f, 0.09f);
	SetBoundingBox(left_lower_arm_box, 0.08f, 0.25f, 0.08f);
	SetBoundingBox(left_hand_box, 0.052f, 0.155f, 0.091f);
	SetBoundingBox(right_upper_arm_box, 0.09f, 0.275f, 0.09f);
	SetBoundingBox(right_lower_arm_box, 0.08f, 0.25f, 0.08f);
	SetBoundingBox(right_hand_box, 0.052f, 0.155f, 0.091f);

	vecSetValue(left_leg_offset, -0.178f, 0.0f, 0.0f);
	vecSetValue(right_leg_offset, 0.178f, 0.0f, 0.0f);

	vecSetValue(left_arm_offset, -0.45f, 0.0f, 0.0f);
	vecSetValue(right_arm_offset, 0.45f, 0.0f, 0.0f);
}

void CTriangleView::InitTempFrame(void)
{
	TempFrame.m_fHeadX = 0.0f;
	TempFrame.m_fHeadY = 0.0f;

	TempFrame.m_fShoulderX = 0.0f;
	TempFrame.m_fShoulderY = 0.0f;

	TempFrame.m_fUpperBodyX = 0.0f;
	TempFrame.m_fUpperBodyY = 0.0f;

	TempFrame.m_fLowerBodyX = 0.0f;
	TempFrame.m_fLowerBodyY = 0.0f;

	TempFrame.m_fLeftUpperArmX = 0.0f;
	TempFrame.m_fLeftUpperArmY = 0.0f;

	TempFrame.m_fLeftLowerArmX = 0.0f;
	TempFrame.m_fLeftLowerArmY = 0.0f;

	TempFrame.m_fLeftHandX = 0.0f;
	TempFrame.m_fLeftHandY = 0.0f;

	TempFrame.m_fRightUpperArmX = 0.0f;
	TempFrame.m_fRightUpperArmY = 0.0f;

	TempFrame.m_fRightLowerArmX = 0.0f;
	TempFrame.m_fRightLowerArmY = 0.0f;

	TempFrame.m_fRightHandX = 0.0f;
	TempFrame.m_fRightHandY = 0.0f;

	TempFrame.m_fLeftUpperLegX = 0.0f;
	TempFrame.m_fLeftUpperLegY = 0.0f;

	TempFrame.m_fLeftLowerLegX = 0.0f;
	TempFrame.m_fLeftLowerLegY = 0.0f;

	TempFrame.m_fLeftFootX = 0.0f;
	TempFrame.m_fLeftFootY = 0.0f;

	TempFrame.m_fRightUpperLegX = 0.0f;
	TempFrame.m_fRightUpperLegY = 0.0f;

	TempFrame.m_fRightLowerLegX = 0.0f;
	TempFrame.m_fRightLowerLegY = 0.0f;

	TempFrame.m_fRightFootX = 0.0f;
	TempFrame.m_fRightFootY = 0.0f;
}

void CTriangleView::InitCollideDetection(void)
{
	m_bLeftFootHit = FALSE;
	m_bRightFootHit = FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -