/// <summary> /// �V���A���C�Y���ꂽ���[�V�����f�[�^����C���X�^���X������ /// </summary> private void Awake() { // �f�[�^�̃f�V���A���C�Y motion = GetDeserializedMotion(type, serializedMotion); rotation = RotationBase2D.GetDeserializedRotation(rotationType, serializedRotation); rotation.motion = motion; }
/// <summary> /// �V�K�̎��s����]����I�u�W�F�N�g������ /// </summary> /// <param name="type"></param> /// <returns></returns> public static RotationBase2D CreateInstance(RotationBase2D.RotationType type) { var rotation = Activator.CreateInstance(runtimeType[type]) as RotationBase2D; rotation.type = type; return rotation; }
/// <summary> /// �C���X�y�N�^���GUI��`�悷�� /// </summary> public override void DrawGUI() { base.DrawGUI(); if ( motion == null ) { motion = EasyMotion2D.CreateInstance(EasyMotion2D.MotionType.Stop); } if ( rotation == null ) { rotation = RotationBase2D.CreateInstance(RotationBase2D.RotationType.None); } var curMotionType = EasyMotion2D.GetSerializedType(motion.GetType()); var newMotionType = (EasyMotion2D.MotionType)UnityEditor.EditorGUILayout.EnumPopup("Motion Type", curMotionType); if ( newMotionType != curMotionType ) { motion = EasyMotion2D.CreateInstance(newMotionType); } motion.DrawGUI(); var curRotationType = RotationBase2D.GetSerializedType(rotation.GetType()); var newRotationType = (RotationBase2D.RotationType)UnityEditor.EditorGUILayout.EnumPopup("Rotation Type", curRotationType); if ( newRotationType != curRotationType ) { rotation = RotationBase2D.CreateInstance(newRotationType); } rotation.DrawGUI(); }
/// <summary> /// �f�V���A���C�Y /// </summary> /// <param name="bytes">�V���A���C�Y�ς݃��[�V�����f�[�^</param> /// <param name="offset">���[�V�����f�[�^�̊J�n�ʒu</param> /// <returns>�f�V���A���C�Y�Ɏg�p�����o�C�g�T�C�Y��offset����Z�����l</returns> public override int Deserialize(byte[] bytes, int offset) { offset = base.Deserialize(bytes, offset); motionType = (EasyMotion2D.MotionType)BitConverter.ToInt32(bytes, offset); offset += sizeof(int); motion = EasyMotion2D.GetDeserializedMotion(motionType, bytes, offset, out offset); rotationType = (RotationBase2D.RotationType)BitConverter.ToInt32(bytes, offset); offset += sizeof(int); rotation = RotationBase2D.GetDeserializedRotation(rotationType, bytes, offset, out offset); return offset; }
/// <summary> /// �V���A���C�Y /// </summary> /// <returns>�V���A���C�Y���ꂽ�o�C�i���z��</returns> public override byte[] Serialize() { var result = base.Serialize(); if ( motion == null ) { motion = EasyMotion2D.CreateInstance(EasyMotion2D.MotionType.Stop); } if ( rotation == null ) { rotation = RotationBase2D.CreateInstance(RotationBase2D.RotationType.None); } var motionType = EasyMotion2D.GetSerializedType(motion.GetType()); var rotationType = RotationBase2D.GetSerializedType(rotation.GetType()); result = result .Concat(BitConverter.GetBytes((int)motionType)) .Concat(motion.Serialize()) .Concat(BitConverter.GetBytes((int)rotationType)) .Concat(rotation.Serialize()).ToArray(); return result; }