2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

58 lines
2.0 KiB

//========= Copyright 2016-2020, HTC Corporation. All rights reserved. ===========
using HTC.UnityPlugin.Utility;
using UnityEngine;
namespace HTC.UnityPlugin.PoseTracker
{
public class PoseFreezer : BasePoseModifier
{
public bool freezePositionX = false;
public bool freezePositionY = false;
public bool freezePositionZ = false;
public bool freezeRotationX = true;
public bool freezeRotationY = false;
public bool freezeRotationZ = true;
public override void ModifyPose(ref RigidPose pose, Transform origin)
{
Vector3 freezePos;
Vector3 freezeEuler;
if (freezePositionX || freezePositionY || freezePositionZ)
{
if (origin != null && origin != transform.parent)
{
freezePos = origin.InverseTransformPoint(transform.position);
}
else
{
freezePos = transform.localPosition;
}
if (freezePositionX) { pose.pos.x = freezePos.x; }
if (freezePositionY) { pose.pos.y = freezePos.y; }
if (freezePositionZ) { pose.pos.z = freezePos.z; }
}
if (freezeRotationX || freezeRotationY || freezeRotationZ)
{
if (origin != null && origin != transform.parent)
{
freezeEuler = (Quaternion.Inverse(origin.rotation) * transform.rotation).eulerAngles;
}
else
{
freezeEuler = transform.localEulerAngles;
}
var poseEuler = pose.rot.eulerAngles;
if (freezeRotationX) { poseEuler.x = freezeEuler.x; }
if (freezeRotationY) { poseEuler.y = freezeEuler.y; }
if (freezeRotationZ) { poseEuler.z = freezeEuler.z; }
pose.rot = Quaternion.Euler(poseEuler);
}
}
}
}