📄 triangleview.cpp
字号:
// 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 + -