12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using System;
- using System.IO;
- using UnityEngine;
- public abstract class DynamicBoneColliderBase : MonoBehaviour
- {
- public virtual string TypeName
- {
- get
- {
- return string.Empty;
- }
- }
- public virtual bool Collide(ref Vector3 particlePosition, float particleRadius)
- {
- return false;
- }
- public virtual void Serialize(BinaryWriter f_bw, int f_nVersion)
- {
- if (base.transform.name.IndexOf("_HIT_", 0) != 0)
- {
- NDebug.MessageBox("確認", base.transform.name + " 名の先頭に _HIT_ を付加して保存します。");
- base.transform.name = "_HIT_" + base.transform.name;
- }
- f_bw.Write(base.transform.parent.name);
- f_bw.Write(base.transform.name);
- f_bw.Write(base.transform.localPosition.x);
- f_bw.Write(base.transform.localPosition.y);
- f_bw.Write(base.transform.localPosition.z);
- f_bw.Write(base.transform.localRotation.x);
- f_bw.Write(base.transform.localRotation.y);
- f_bw.Write(base.transform.localRotation.z);
- f_bw.Write(base.transform.localRotation.w);
- f_bw.Write(base.transform.localScale.x);
- f_bw.Write(base.transform.localScale.y);
- f_bw.Write(base.transform.localScale.z);
- f_bw.Write((int)this.m_Direction);
- f_bw.Write(this.m_Center.x);
- f_bw.Write(this.m_Center.y);
- f_bw.Write(this.m_Center.z);
- f_bw.Write((int)this.m_Bound);
- }
- public virtual void Deserialize(BinaryReader f_br, int f_nVersion, Transform f_trBodyBoneRoot)
- {
- string name = f_br.ReadString();
- Transform transform = CMT.SearchObjName(f_trBodyBoneRoot, name, true);
- if (transform == null)
- {
- NDebug.Assert("物理体親ボーンがありません。", false);
- }
- base.transform.SetParent(transform, false);
- base.transform.name = f_br.ReadString();
- base.transform.localPosition = new Vector3(f_br.ReadSingle(), f_br.ReadSingle(), f_br.ReadSingle());
- base.transform.localRotation = new Quaternion(f_br.ReadSingle(), f_br.ReadSingle(), f_br.ReadSingle(), f_br.ReadSingle());
- base.transform.localScale = new Vector3(f_br.ReadSingle(), f_br.ReadSingle(), f_br.ReadSingle());
- this.m_Direction = (DynamicBoneColliderBase.Direction)f_br.ReadInt32();
- this.m_Center.Set(f_br.ReadSingle(), f_br.ReadSingle(), f_br.ReadSingle());
- this.m_Bound = (DynamicBoneColliderBase.Bound)f_br.ReadInt32();
- }
- [Tooltip("The axis of the capsule's height.")]
- public DynamicBoneColliderBase.Direction m_Direction = DynamicBoneColliderBase.Direction.Y;
- [Tooltip("The center of the sphere or capsule, in the object's local space.")]
- public Vector3 m_Center = Vector3.zero;
- [Tooltip("Constrain bones to outside bound or inside bound.")]
- public DynamicBoneColliderBase.Bound m_Bound;
- public enum Direction
- {
- X,
- Y,
- Z
- }
- public enum Bound
- {
- Outside,
- Inside
- }
- }
|