コード例 #1
0
ファイル: Camera.cpp プロジェクト: Error323/CORPSE
void FPSCamera::KeyPressed(int key, bool repeat) {
	if (repeat) {
		const float keySens = inputHandler->GetKeySensitivity();
		const bool mouseLook = AUX->GetMouseLook();

		switch (key) {
			case SDLK_LALT:  { VStrafe( 1, keySens); } break;
			case SDLK_LCTRL: { VStrafe(-1, keySens); } break;

			case SDLK_w: { Move(    1, keySens); } break;
			case SDLK_s: { Move(   -1, keySens); } break;
			case SDLK_a: { HStrafe(-1, keySens); } break;
			case SDLK_d: { HStrafe( 1, keySens); } break;
			case SDLK_q: { Roll(   -1, keySens * DEG2RAD(0.5f)); } break;
			case SDLK_e: { Roll(    1, keySens * DEG2RAD(0.5f)); } break;

			case SDLK_UP:    { if (!mouseLook) { Pitch(-1, keySens * DEG2RAD(0.5f)); } } break;
			case SDLK_DOWN:  { if (!mouseLook) { Pitch( 1, keySens * DEG2RAD(0.5f)); } } break;
			case SDLK_LEFT:  { if (!mouseLook) { Yaw(  -1, keySens * DEG2RAD(0.5f)); } } break;
			case SDLK_RIGHT: { if (!mouseLook) { Yaw(   1, keySens * DEG2RAD(0.5f)); } } break;

			default: {} break;
		}
	}
}
コード例 #2
0
Vector2D GoalKeeper::GetRearInterposeTarget()const
{
  double xPosTarget = Team()->HomeGoal()->Center().x;

  double yPosTarget = Pitch()->PlayingArea()->Center().y - 
                     Prm.GoalWidth*0.5 + (Ball()->Pos().y*Prm.GoalWidth) /
                     Pitch()->PlayingArea()->Height();

  return Vector2D(xPosTarget, yPosTarget); 
}
コード例 #3
0
ファイル: Camera.cpp プロジェクト: J-Issa1/SolarSystem_OpenGL
void Camera::Update(float deltaTime, SDL_Event e)
{
	if (e.type == SDL_KEYDOWN)
	{
		switch (e.key.keysym.sym)
		{
		case SDLK_a:
			Yaw(-kAngleToTurn);
			break;

		case SDLK_d:
			Yaw(kAngleToTurn);
			break;

		case SDLK_s:
			Pitch(-kAngleToTurn);
			break;

		case SDLK_w:
			Pitch(kAngleToTurn);
			break;

		case SDLK_q:
			Roll(kAngleToTurn);
			break;

		case SDLK_e:
			Roll(-kAngleToTurn);
			break;

		case SDLK_DOWN:
			MoveForward(-kMoveDistance);
			break;

		case SDLK_UP:
			MoveForward(kMoveDistance);
			break;

		case SDLK_LEFT:
			Strafe(kMoveDistance);
			break;

		case SDLK_RIGHT:
			Strafe(-kMoveDistance);
			break;
		}
	}
}
コード例 #4
0
clsObject::clsObject(
		float pX, 
		float pY, 
		float pZ, 
		float p,
		float y,
		float r, 
		CLASS_ID clsID)
	: ClassID(clsID), ID(Counter++), Name(NULL)
{
	Name	= new TCHAR[MAX_OBJECT_NAME_LEN];
	Name[0]	= '\0';

	//UCS		= NULL;
	pos		= VECTOR3D(pX, pY, pZ);

	fWd		= VECTOR3D(1.0f, .0f, .0f);
	rWd		= VECTOR3D(.0f, 1.0f, .0f);
	uWd		= VECTOR3D(.0f, .0f, 1.0f);
	world	= VECTOR3D();

	worldScale	= VECTOR3D(1.0f, 1.0f, 1.0f);
	localScale	= worldScale;

	Pitch(p);
	Yaw(y);
	Roll(r);
}
コード例 #5
0
ファイル: CoolD_Camera.cpp プロジェクト: realD86/Rasterizer
Dvoid Camera::UpdateCamera(Dint x, Dint y, Dint clickState, MoveKey moveKey, Matrix44& viewMatrix, Matrix44& perspectiveMatrix)
{
    UpdateTimeDelta();
    m_bMove = false;

    //───────────────────────────────────────────────────────────────────────────────────
    //키 입력 처리
    InputHandle(x, y, clickState, moveKey);
    //───────────────────────────────────────────────────────────────────────────────────

    m_vPos += m_vMoveDir;
    m_vLook += m_vMoveDir;

    Pitch();
    Yaw();

    if (m_bMove)
    {
        ViewMatrixCalculate();
    }

    viewMatrix = m_matCam[CM_VIEW];
    perspectiveMatrix = m_matCam[CM_PROJ];

    m_MouseMoveInterval = { 0, 0 };
}
コード例 #6
0
	void MidiInputDeviceMidiShare::KeyOffTask(long date, short ref, long a1, long a2, long a3)
	{
		MidiInputDeviceMidiShare* driver = (MidiInputDeviceMidiShare*)MidiGetInfo(ref);
		MidiEvPtr ev =(MidiEvPtr)a1;
		driver->DispatchNoteOn(Pitch(ev),Vel(ev),Chan(ev));
		MidiFreeEv(ev);
	}
コード例 #7
0
ファイル: Camera3.cpp プロジェクト: barryHub20/SP3
void Camera3::Update(double dt, bool* myKeys)
{/*
	Vector3 view = (target - position).Normalized();
	Vector3 right = view.Cross(up);
	right.y = 0;
	Inertia: instant dir change

	* strafe */
	if(myKeys[KEY_A] && !myKeys[KEY_D])
		Strafe(-dt);
	else if(straftMovingLeft)
		DecelerateLeft(-dt);

	if(myKeys[KEY_D] && !myKeys[KEY_A])
		Strafe(dt);
	else if(straftMovingRight)
		DecelerateRight(dt);

	/* walk */
	if(myKeys[KEY_W] && !myKeys[KEY_S])
		Walk(dt);
	else if(walkMovingForward)
		DecelerateForward(dt);

	if(myKeys[KEY_S] && !myKeys[KEY_W])
		Walk(-dt);
	else if(walkMovingBackward)
		DecelerateBackward(-dt);

	if(myKeys[KEY_C] && !croutching)
		croutching = true;

	croutch(dt);


	/* fly */
	if(myKeys[KEY_K])
		Fly(dt);
	if(myKeys[KEY_L])
		Fly(-dt);

	if(myKeys[KEY_SPACE] && !jump)	//com runs too fast, spacebar 2 times
		setJump(dt);

	if(myKeys[KEY_T])	//reset
	{
		Reset();
	}
	

	/** update jump **/
	if(jump)
		Jump(dt);
	

	/** mouse **/
	Yaw(dt);
	Pitch(dt);
}
コード例 #8
0
/* --------------------------------------------------------
Real time echo management task
-------------------------------------------------------- */
void MSALARMAPI EchoTask( long d,short ref,long el,long a2, long a3)
{
    MidiEvPtr e;
    short v,p;

    e= (MidiEvPtr)el;
    v = Vel(e)+MSParam[kVel];
    p = Pitch(e)+MSParam[kPitch];
    if ( ((v>0)&&(v<128)) && ((p>=0)&&(p<128)) ) {
        Vel(e) = v;
        Pitch(e) = p;
        MidiSendAt(ref, MidiCopyEv(e), d);
        if( !MidiTask(EchoTask, d+MSParam[kDelay], ref, el, 0, 0))
            MidiFreeEv(e);
    }
    else MidiFreeEv(e);
}
コード例 #9
0
ファイル: Camera.cpp プロジェクト: PeterMerkert/symphony
 /*
 Generates a view matrix for the camera's viewpoint. This matrix can be sent
 straight to the shader...it's already an 'inverse camera' matrix.
 */
 glm::mat4 Camera::BuildViewMatrix()
 {
     //Why do a complicated matrix inversion, when we can just generate the matrix
     //using the negative values ;). The matrix multiplication order is important!
     return glm::rotate(-Pitch(), glm::vec3(1.f, 0.f, 0.f))
          * glm::rotate(-Yaw(), glm::vec3(0.f, 1.f, 0.f))
          * glm::translate(-transform.GetPosition());
 }
コード例 #10
0
ファイル: Camera.cpp プロジェクト: Jahze/bearded-robot
void Camera::MouseMoved(int xdelta, int ydelta)
{
	if (xdelta != 0)
		Yaw(Units::Radians, -xdelta * 0.2 * DEG_TO_RAD);

	if (ydelta != 0)
		Pitch(Units::Radians, -ydelta * 0.2 * DEG_TO_RAD);
}
コード例 #11
0
static void SongSelLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	f->count = 2;
	f->data[2] = SongSel;
	f->data[1] = Pitch(e);
	f->runStat = 0;
	MidiFreeCell (e);	
}
コード例 #12
0
ファイル: camera.cpp プロジェクト: Alriightyman/RTS
void CAMERA::Update(MOUSE &mouse, float timeDelta)
{
	//Restrict focus movment to the xz-plane
	m_right.y = m_look.y = 0.0f;
	D3DXVec3Normalize(&m_look, &m_look);
	D3DXVec3Normalize(&m_right, &m_right);

	//Move Focus (i.e. Scroll)
	if(mouse.x < mouse.m_viewport.left + 10)	Scroll(-m_right * timeDelta * 30.0f);
	if(mouse.x > mouse.m_viewport.right - 10)	Scroll(m_right * timeDelta * 30.0f);
	if(mouse.y < mouse.m_viewport.top + 10)		Scroll(m_look * timeDelta * 30.0f);
	if(mouse.y > mouse.m_viewport.bottom - 10)	Scroll(-m_look * timeDelta * 30.0f);

	//Move Camera (i.e. Change Angle)
	if(KEYDOWN(VK_LEFT))Yaw(-timeDelta);
	if(KEYDOWN(VK_RIGHT))Yaw(timeDelta);
	if(KEYDOWN(VK_UP))Pitch(timeDelta);
	if(KEYDOWN(VK_DOWN))Pitch(-timeDelta);
	
	//Zoom (i.e. change fov)
	if(KEYDOWN(VK_ADD))Zoom(-timeDelta);
	if(KEYDOWN(VK_SUBTRACT))Zoom(timeDelta);

	//Change m_radius
	if(mouse.WheelUp())  ChangeRadius(-1.0f);
	if(mouse.WheelDown())ChangeRadius(1.0f);

	//Calculate Eye Position
	float sideRadius = m_radius * cos(m_beta);
	float height = m_radius * sin(m_beta);

	m_eye = D3DXVECTOR3(m_focus.x + sideRadius * cos(m_alpha),
					  m_focus.y + height, 
					  m_focus.z + sideRadius * sin(m_alpha));

	if(m_pDevice != NULL)
	{
		D3DXMATRIX view = GetViewMatrix();
		D3DXMATRIX projection = GetProjectionMatrix();

		m_pDevice->SetTransform(D3DTS_VIEW, &view);
		m_pDevice->SetTransform(D3DTS_PROJECTION, &projection);

		CalculateFrustum(view, projection);
	}	
}
コード例 #13
0
ファイル: Camera.cpp プロジェクト: Xyzyx101/GoblinBrawl
void XM_CALLCONV Camera::Update( float deltaTime ) {

	if( GetAsyncKeyState( VK_HOME ) ) {
		SetCamType();
	}
	
	if( GetCamType()==1 ) {

		if( GetAsyncKeyState( VK_LEFT ) ) {
			RotateY( 5.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_RIGHT ) ) {
			RotateY( -5.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_UP ) ) {
			Walk( -15.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_DOWN ) ) {
			Walk( 15.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_PRIOR ) ) {
			Pitch( 1.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_NEXT ) ) {
			Pitch( -1.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_OEM_COMMA ) ) {
			Strafe( -15.0f * deltaTime );
		}
		if( GetAsyncKeyState( VK_OEM_PERIOD ) ) {
			Strafe( 15.0f * deltaTime );
		}
	} else {

		// default camera
		
		//XMStoreFloat3( &target1, goblin1Pos);
		//XMVECTOR posV = XMLoadFloat3( &pos );
		//XMVECTOR targetV = goblin1Pos;
		//XMVECTOR upV = GetUpXM();
		//LookAt( posV, targetV, upV );
	}

	UpdateViewMatrix();
}
コード例 #14
0
static void SongPosLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	f->count = 3;
	f->data[3] = SongPos;
	f->data[2] = Pitch(e);
	f->data[1] = Vel(e);
	f->runStat = 0;
	MidiFreeCell (e);	
}
コード例 #15
0
	void MidiInputDeviceMidiShare::ReceiveEvents(short ref)
	{
		MidiInputDeviceMidiShare* driver = (MidiInputDeviceMidiShare*)MidiGetInfo(ref);
		MidiEvPtr ev;
		
		while ((ev = MidiGetEv(ref)))
		
			switch(EvType(ev)) { 
			
				case typeCtrlChange:
					if (MidiGetField(ev,0) == 0)
						driver->DispatchBankSelectMsb(MidiGetField(ev,0),Chan(ev));
					else if (MidiGetField(ev,0) == 32)
						driver->DispatchBankSelectLsb(MidiGetField(ev,0),Chan(ev));
					else
						driver->DispatchControlChange(MidiGetField(ev,0),MidiGetField(ev,0),Chan(ev));
					MidiFreeEv(ev);
					break;
					
				case typePitchWheel:
					driver->DispatchPitchbend(((MidiGetField(ev,0)+(MidiGetField(ev,1) << 7)) - 8192),Chan(ev));
					MidiFreeEv(ev);
					break;
					
				case typeNote:
					driver->DispatchNoteOn(Pitch(ev),Vel(ev),Chan(ev));
					MidiTask(KeyOffTask,Date(ev)+Dur(ev),ref,(long)ev,0,0);
					break;

				case typeKeyOn:
					if (Vel(ev) > 0)
						driver->DispatchNoteOn(Pitch(ev),Vel(ev),Chan(ev));
					else
						driver->DispatchNoteOff(Pitch(ev),Vel(ev),Chan(ev));
					MidiFreeEv(ev);
					break;
				
				case typeKeyOff:
					driver->DispatchNoteOff(Pitch(ev),Vel(ev),Chan(ev));
					MidiFreeEv(ev);
					break;
			}
		}
コード例 #16
0
ファイル: Camera.cpp プロジェクト: Error323/CORPSE
void FPSCamera::MouseMoved(int, int, int dx, int dy) {
	if (AUX->GetMouseLook()) {
		const int xsign =  (dx > 0)?  1: -1;
		const int ysign =  (dy > 0)? -1:  1;
		const float rdx = ((dx > 0)? dx: -dx) / hFOVdeg;
		const float rdy = ((dy > 0)? dy: -dy) / vFOVdeg;

		if (dx != 0) { Yaw(  xsign, rdx); }
		if (dy != 0) { Pitch(ysign, rdy); }
	}
}
コード例 #17
0
static void NoteLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	Byte status = NoteOn + Chan(e);
	if( f->runStat== status)
		f->count= 2;
	else {
		f->runStat= f->data[3] = status;
		f->count = 3;
	}
	f->data[2] = Pitch(e);
	f->data[1] = Vel(e);
}
コード例 #18
0
/*---------------------------------------------------------------------------------*/
void CameraHandler::RotateThirdPerson(const OIS::MouseEvent &arg)
{
	//In the future: Implement raycast, so the cameras bound spehere always can see the Player and not get stuck between stuff.

	//Yaw the camera. Rotate around the Y axis
	mvpCamOrginNode->yaw(Ogre::Degree(-(*mvpRotate) * arg.state.X.rel), Ogre::Node::TS_LOCAL);
	//Pitch the camera. Rotate around X axis
	Pitch(arg,mvpCamHelperNode,mvPitchTrackerThirdPerson);

	//Update GUI cursor position
	GameFramework::getSingletonPtr()->mpGui->updateCursorPos(arg.state.X.abs,arg.state.Y.abs);
}
コード例 #19
0
static void ChanPressLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	Byte status = AfterTouch + Chan(e);
	if( f->runStat== status)
		f->count= 1;
	else {
		f->runStat= f->data[2] = status;
		f->count = 2;
	}
	f->data[1] = Pitch(e);
	MidiFreeCell (e);	
}
コード例 #20
0
static void ProgChangeLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	Byte status = ProgramChg + Chan(e);
	if( f->runStat== status)
		f->count= 1;
	else {
		f->runStat= f->data[2] = status;
		f->count = 2;
	}
	f->data[1] = Pitch(e);
	MidiFreeCell (e);	
}
コード例 #21
0
ファイル: Camera.cpp プロジェクト: Banbury/starshatter-open
void
Camera::LookAt(const Point& target)
{
    // No navel gazing:
    if (target == Pos())
    return;

    Point tgt, tmp = target - Pos();

    // Rotate into the view orientation:
    tgt.x = (tmp * vrt());
    tgt.y = (tmp * vup());
    tgt.z = (tmp * vpn());

    if (tgt.z == 0) {
        Pitch(0.5);
        Yaw(0.5);
        LookAt(target);
        return;
    }

    double az = atan(tgt.x/tgt.z);
    double el = atan(tgt.y/tgt.z);

    // if target is behind, offset by 180 degrees:
    if (tgt.z < 0)
    az -= PI;

    Pitch(-el);
    Yaw(az);

    // roll to upright position:
    double deflection = vrt().y;
    while  (fabs(deflection) > 0.001) {
        double theta = asin(deflection/vrt().length());
        Roll(-theta);

        deflection = vrt().y;
    }
}
コード例 #22
0
static void PitchWheelLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	Byte status = PitchBend + Chan(e);
	if( f->runStat== status)
		f->count= 2;
	else {
		f->runStat= f->data[3] = status;
		f->count = 3;
	}
	f->data[2] = Pitch(e);
	f->data[1] = Vel(e);
	MidiFreeCell (e);	
}
コード例 #23
0
static void CtrlChangeLinearizeMth (MidiEvPtr e, Ev2StreamPtr f)
{
	Byte status = ControlChg + Chan(e);
	if( f->runStat== status)
		f->count= 2;
	else {
		f->runStat= f->data[3] = status;
		f->count = 3;
	}
	f->data[2] = Pitch(e);
	f->data[1] = Vel(e);
	MidiFreeCell (e);	
}
コード例 #24
0
void ChapterAWriter::notifyCommand ( MidiEvPtr command )
{

  /* KeyPress */
  if ( EvType ( command ) == typeKeyPress ) {

    for ( list<TNotePressInfo>::iterator i = _history.begin ( ) ; i != _history.end ( ) ; i++ ) {
      if ( ( * i ).pitch == Pitch ( command ) ) {
	_history.erase ( i );
	break;
      }
    }

    TNotePressInfo newNotePress;
    newNotePress.pitch = Pitch ( command );
    newNotePress.press = Vel ( command );
    newNotePress.x = 0;
    newNotePress.payload = currentPayloadNumber ( );
    _history.push_back ( newNotePress );

  }

}
コード例 #25
0
void CFreeCameraController::MouseView()
{
	// if there's no velocity changed, skip the process
	glm::vec3 vel = Global::InputManager().CursorVelocity();
	if (glm::length2(vel) < glm::epsilon<float>() * glm::epsilon<float>())
		return;

	// find angular increment
	float angleYaw = vel.x * ANG_SPEED_SCALER;
	float anglePitch = vel.y * ANG_SPEED_SCALER;

	Yaw(-angleYaw);
	Pitch(-anglePitch);
}
コード例 #26
0
ファイル: symbolbehavior.cpp プロジェクト: tomvodi/LimePipes
void SymbolBehavior::setOptions(const SymbolOptions &options)
{
    // Unset all data
    setData(QVariant(), LP::SymbolPitch);
    setData(QVariant(), LP::SymbolLength);

    m_options = options;

    if (options.testFlag(HasPitch)) {
        setData(QVariant::fromValue<Pitch>(Pitch()), LP::SymbolPitch);
    }
    if (options.testFlag(HasLength)) {
        setData(QVariant::fromValue<Length::Value>(Length::_8), LP::SymbolLength);
    }
}
コード例 #27
0
/*---------------------------------------------------------------------------------*/
void CameraHandler::RotateFirstPerson(const OIS::MouseEvent &arg)
{
	//Yaw and pitch FirstPerson Nodes
	mvpCamOrginNode->yaw(Ogre::Degree(-(*mvpRotate) * arg.state.X.rel), Ogre::Node::TS_LOCAL);
	Pitch(arg,mvpCamFirstPersonNode,mvPitchTrackerFirstPerson);

	//So the camera always looks at the Gun Tracker Node.
	Ogre::Vector3 charPosition = mvpCharNode->_getDerivedPosition();
	charPosition.y += *mvpCamCharYAdjust;
	Ogre::Vector3 directionToGunTracker =  mvpFirstPersonGunTrackerNode->_getDerivedPosition() - charPosition  ;
	mvpCam->setDirection(directionToGunTracker);

	//Tells the player class that the bones needs an update in the game loop (Maybe not needed if only single player and no multiplayer).
	mvpPlayer->setNeedUpdateBones();
}
コード例 #28
0
ファイル: MidiBench.c プロジェクト: AntonLanghoff/whitecatlib
static pascal void AccProcess(long d, short refNum, long a1, long a2, long a3)
{
  short i;
  for (i = 0; i <= 15; i++) {
    MidiEvPtr e = MidiNewEv(typeNote);
    if (e) {
      Pitch(e) = 60;
      Vel(e) = 80;
      Dur(e) = 16;
      Chan(e) = i;
    }
    MidiSend (refNum, e);
  }
  MidiTask (AccProcess, d + 32, refNum, a1, a2, a3);
}
コード例 #29
0
ファイル: MidiBench.c プロジェクト: AntonLanghoff/whitecatlib
/* -----------------------------------------------------------------------------*/
static pascal void GenProcess(long d, short ref, long start, long num, long freq)
{
  short i, adv = 5;

  for (i = 0; i <= 15; i++) {
    MidiEvPtr e = MidiNewEv (typeKeyPress);
    if (e) {
      Pitch(e) = 60;
      Vel(e) = 80;
      Chan(e) = i;
      MidiSendAt (ref, e, start + adv + num * 1000 / freq);
      num++;
    }
  }
  genTask = MidiTask (GenProcess, start + num * 1000 / freq, ref, start, num, freq);
}
コード例 #30
0
inline
typename
std::enable_if<
	Pitch::static_size == 1,
	Pitch
>::type
flipped_pitch(
	Pitch const &,
	typename Pitch::value_type _last_value
)
{
	return
		Pitch(
			_last_value
		);
}