Public 멤버 함수 | |
PROUD_API void | SetGravity (const Vector3 &value) |
PROUD_API void | SetTargetVelocity (const Vector3 &value) |
PROUD_API void | SetTargetPosition (const Vector3 &value) |
PROUD_API Vector3 | GetSplineFollowerPosition () const |
PROUD_API Vector3 | GetSplineFollowerVelocity () const |
PROUD_API Vector3 | GetGravity () const |
PROUD_API Vector3 | GetTargetVelocity () const |
PROUD_API Vector3 | GetTargetPosition () const |
PROUD_API void | SetFollowerVelocity (const Vector3 &value) |
PROUD_API void | SetFollowerPosition (const Vector3 &value) |
PROUD_API Vector3 | GetFollowerVelocity () const |
PROUD_API Vector3 | GetFollowerPosition () const |
PROUD_API void | SetWarpThreshold (double warpThreshold) |
PROUD_API bool | IsFirstUse () |
PROUD_API void | SetFollowDuration (double duration) |
PROUD_API double | GetFollowDuration () |
PROUD_API void | EnableAutoFollowDuration (bool val) |
PROUD_API void | GetTarget (Vector3 &position, Vector3 &velocity) const |
PROUD_API void | GetFollower (Vector3 &position, Vector3 &velocity) const |
PROUD_API void | SetFollower (Vector3 position, Vector3 velocity) |
virtual PROUD_API void | FrameMove (double elapsedTime) |
virtual PROUD_API void | SetTarget (Vector3 position, Vector3 velocity) |
remote object의 jittering되는 position,velocity를 linear interpolation으로 smoothing 처리하는 class이다.
예를 들어, remote object를 dead reckoning을 할 때 유용하다.
(나중에, 이 class를 보강해서, orientation을 quaternion 등으로 interpolation하는 기능이 추가되어도 쓸만하겠다.)
일반적인 사용법
중력에 대한 고려 사항
PROUD_API void Proud::CPositionFollower::EnableAutoFollowDuration | ( | bool | val | ) |
true로 세팅하면 follower가 target까지 다다르는 시간을 자동으로 조절한다.
|
virtual |
매 타임 프레임마다 이 메서드를 호출해야 한다.
elapsedTime | 한 프레임의 시간(초) |
PROUD_API double Proud::CPositionFollower::GetFollowDuration | ( | ) |
마지막으로 SetFollowDuration으로 입력한 값을 출력한다.
PROUD_API void Proud::CPositionFollower::GetFollower | ( | Vector3 & | position, |
Vector3 & | velocity | ||
) | const |
follower의 position, velocity를 구한다.
position | 얻어올 Follower의 위치 vector3 |
velocity | 얻어올 Follower의 속도 vector3 |
PROUD_API Vector3 Proud::CPositionFollower::GetFollowerPosition | ( | ) | const |
position follower 자체의 현재 위치를 얻는다.
PROUD_API Vector3 Proud::CPositionFollower::GetFollowerVelocity | ( | ) | const |
position follower 자체의 현재 속도를 얻는다.
PROUD_API Vector3 Proud::CPositionFollower::GetGravity | ( | ) | const |
마지막으로 입력한 중력 값을 얻는다.
PROUD_API Vector3 Proud::CPositionFollower::GetSplineFollowerPosition | ( | ) | const |
spline 형태로 쫓아가는 follower의 위치를 얻는다.
PROUD_API Vector3 Proud::CPositionFollower::GetSplineFollowerVelocity | ( | ) | const |
spline 형태로 쫓아가는 follower의 현 속도를 얻는다.
follower가 따라가는 target의 pos, vel을 구한다.
position | 얻어올 타겟의 위치 vector3 |
velocity | 얻어올 타겟의 속도 vector3 |
PROUD_API Vector3 Proud::CPositionFollower::GetTargetPosition | ( | ) | const |
position follower가 쫓아가는 목표 지점의 현재 위치를 얻는다.
PROUD_API Vector3 Proud::CPositionFollower::GetTargetVelocity | ( | ) | const |
position follower가 쫓아가는 목표 지점의 현재 속도를 얻는다.
PROUD_API bool Proud::CPositionFollower::IsFirstUse | ( | ) |
FrameMove()가 1회 이상 사용되었는가?
PROUD_API void Proud::CPositionFollower::SetFollowDuration | ( | double | duration | ) |
follower가 target까지 다다르는 시간을 설정한다.
duration | follower가 target까지 다다르는 시간(초단위) |
SetFollowerVelocity,SetFollowerPosition을 한번에 모두 호출한다.
PROUD_API void Proud::CPositionFollower::SetFollowerPosition | ( | const Vector3 & | value | ) |
position follower 자체의 위치를 지정한다.
PROUD_API void Proud::CPositionFollower::SetFollowerVelocity | ( | const Vector3 & | value | ) |
position follower 자체의 속도를 지정한다.
PROUD_API void Proud::CPositionFollower::SetGravity | ( | const Vector3 & | value | ) |
중력을 세팅한다.
|
virtual |
SetTargetPosition과 SetTargetVelocity를 한번에 모두 호출한다.
PROUD_API void Proud::CPositionFollower::SetTargetPosition | ( | const Vector3 & | value | ) |
position follower가 쫓아갈 투명 오브젝트의 위치를 세팅한다.
PROUD_API void Proud::CPositionFollower::SetTargetVelocity | ( | const Vector3 & | value | ) |
position follower가 쫓아갈 투명 오브젝트의 속도를 세팅한다.
PROUD_API void Proud::CPositionFollower::SetWarpThreshold | ( | double | warpThreshold | ) |
만약 새로 받은 target position이 follower와의 거리차가 지나치게 큰 경우, 의도적 워프, 리스폰 혹은 지나친 랙으로 인한 위치 오차일 수 있다. 이런 경우 위치 보정은 오히려 이상한 결과를 야기한다. warp threshold를 정해놓으면 지나치게 큰 위치 오차의 경우 보정을 하지 않고 강제로 follower를 target 위치와 일치시킨다.
warpThreshold | 위치 보정을 무시할 수 있는 임계값으로서의 거리 |