/// <summary> /// 松手时释放 /// </summary> /// <param name="type"></param> private void HandleIdle(ObjectOperaType type) { switch (type) { case ObjectOperaType.自定义: var customize = operaObject.GetComponent <MCustomize>(); if (customize != null) { customize.OnClose(); } break; case ObjectOperaType.物体自身旋转: var rotation = operaObject.GetComponent <MCObjectRatation>(); if (rotation != null) { rotation.OnClose(); } break; default: break; } }
/// <summary> /// 处理抓取 /// </summary> /// <param name="type"></param> /// <returns></returns> private IOperateObject HandleGrab(ObjectOperaType type) { switch (type) { case ObjectOperaType.无: break; case ObjectOperaType.能抓取: //调用物体的抓取 var canGrab = operaObject.GetComponent <MCCanGrab>(); //直接返回 if (canGrab.HandStatus != MInputHandStatus.Idle) { return(null); } //不同的操作端具备不同的操作,所以应该让外部调用 if (OnGrab != null) { OnGrab(canGrab, InputHand.HandIndex); } return(canGrab); case ObjectOperaType.物体自身旋转: var rotation = operaObject.GetComponent <MCObjectRatation>(); //如果物体不是闲置状态,则直接返回 if (rotation.HandStatus != MInputHandStatus.Idle) { return(null); } rotation.OnOpen(); return(rotation); case ObjectOperaType.自定义: var customize = operaObject.GetComponent <MCustomize>(); if (customize.HandStatus != MInputHandStatus.Idle) { return(null); } customize.OnOpen(InputHand.HandIndex); return(customize); default: break; } return(null); }
/// <summary> /// 操作状态 /// </summary> /// <param name="operaType"></param> public void OnOperaStatus() { if (operaType == beforeChange) { return; } switch (beforeChange) { case ObjectOperaType.无: RemoveNone(); break; case ObjectOperaType.能抓取: RemoveCanGrab(); break; case ObjectOperaType.物体自身旋转: case ObjectOperaType.摄像机围绕物体旋转: RemoveRotation(); break; case ObjectOperaType.自定义: RemoveCustomize(); break; default: break; } switch (operaType) { case ObjectOperaType.无: AddNone(); break; case ObjectOperaType.能抓取: AddCanGrab(); break; case ObjectOperaType.物体自身旋转: AddSelfRotation(); break; case ObjectOperaType.摄像机围绕物体旋转: AddCameraCenterObjectRotation(); break; case ObjectOperaType.自定义: AddCustomize(); break; default: break; } beforeChange = operaType; }
/// <summary> /// 松手时释放 /// </summary> /// <param name="type"></param> private void HandleIdle(ObjectOperaType type) { switch (type) { case ObjectOperaType.自定义: var customize = operaObject.GetComponent <MCustomize>(); if (customize != null) { customize.OnClose(); } break; case ObjectOperaType.物体自身旋转: var rotation = operaObject.GetComponent <MCObjectRotation>(); if (rotation != null) { rotation.OnClose(); } break; case ObjectOperaType.摄像机围绕物体旋转: var cameraRotation = operaObject.GetComponent <MCCameraRotateAround>(); if (cameraRotation != null) { cameraRotation.OnClose(); } break; case ObjectOperaType.物体式按钮: var button = operaObject.GetComponent <MCObjectButton>(); button.OnFreed(InputHand.HandIndex); break; default: break; } }
/// <summary> /// 设置操作类型 /// </summary> /// <param name="type"></param> public void SetOperaType(ObjectOperaType type) { operaType = type; }
/// <summary> /// 设置状态 /// </summary> /// <param name="operaType"></param> public void OnOperaStatus(ObjectOperaType operaType) { this.operaType = operaType; OnOperaStatus(); }