private void ReassignDynamicBoneValues(JiggleBone lavJiggleBone, DynamicBone dynBone) { lavJiggleBone.Root = dynBone.m_Root; lavJiggleBone.ConstrainAxis = (ConstrainAxis)dynBone.m_FreezeAxis; lavJiggleBone.Damping = dynBone.m_Damping; lavJiggleBone.DampingCurve = dynBone.m_DampingDistrib; lavJiggleBone.Elasticity = dynBone.m_Elasticity; lavJiggleBone.ElasticityCurve = dynBone.m_ElasticityDistrib; lavJiggleBone.Stiffness = dynBone.m_Stiffness; lavJiggleBone.StiffnessCurve = dynBone.m_StiffnessDistrib; lavJiggleBone.Inert = dynBone.m_Inert; lavJiggleBone.InertCurve = dynBone.m_InertDistrib; lavJiggleBone.Radius = dynBone.m_Radius; lavJiggleBone.RadiusCurve = dynBone.m_RadiusDistrib; lavJiggleBone.EndOffset = dynBone.m_EndOffset; lavJiggleBone.Gravity = dynBone.m_Gravity; lavJiggleBone.Force = dynBone.m_Force; lavJiggleBone.Exclusions = dynBone.m_Exclusions; List <JiggleCollider> lavColliders = new List <JiggleCollider>(); foreach (DynamicBoneCollider dCol in dynBone.m_Colliders) { lavColliders.Add(dCol.gameObject.GetComponent <JiggleColliderSphere>()); } lavJiggleBone.Colliders = lavColliders; }
private void FindDynamicBone() { DynamicBone[] comps = gameObject.GetComponentsInChildren <DynamicBone>(true); if (comps.Length == 0) { Debug.Log("Targeted object tree doesn't have any DynamicBones!", gameObject); } foreach (DynamicBone component in comps) { if (component.gameObject.GetComponent <JiggleBone>()) { if (enforceOriginalValues) { Debug.Log("Copying DynamicBone values into " + component.gameObject.name, component.gameObject); JiggleBone lavJiggleBone = component.gameObject.GetComponent <JiggleBone>(); this.ReassignDynamicBoneValues(lavJiggleBone, component); } else { Debug.Log(component.gameObject.name + " already has JiggleBone", component.gameObject); } } else { Debug.Log(component.gameObject.name + " doesn't have JiggleBone, targeting...", component.gameObject); JiggleBone lavJiggleBone = component.gameObject.AddComponent(typeof(JiggleBone)) as JiggleBone; this.ReassignDynamicBoneValues(lavJiggleBone, component); switch (postReplacementAction) { case PostReplacementActions.Disable: component.enabled = false; break; case PostReplacementActions.Remove: DestroyImmediate(component); break; } } } }