/// <summary> /// Set Collider field value. /// </summary> /// <param name="collider"></param> /// <param name="vgoCollider"></param> public static void SetComponentValue(Collider collider, VGO_Collider vgoCollider) { if (collider == null) { return; } if (vgoCollider == null) { return; } Type type = collider.GetType(); if (type == typeof(BoxCollider)) { var boxCollider = collider as BoxCollider; if (vgoCollider.type == ColliderType.Box) { boxCollider.enabled = vgoCollider.enabled; boxCollider.isTrigger = vgoCollider.isTrigger; boxCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); boxCollider.size = ArrayConverter.ToVector3(vgoCollider.size); boxCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } else if (type == typeof(CapsuleCollider)) { var capsuleCollider = collider as CapsuleCollider; if (vgoCollider.type == ColliderType.Capsule) { capsuleCollider.enabled = vgoCollider.enabled; capsuleCollider.isTrigger = vgoCollider.isTrigger; capsuleCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); capsuleCollider.radius = vgoCollider.radius; capsuleCollider.height = vgoCollider.height; capsuleCollider.direction = vgoCollider.direction; capsuleCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } else if (type == typeof(SphereCollider)) { var sphereCollider = collider as SphereCollider; if (vgoCollider.type == ColliderType.Sphere) { sphereCollider.enabled = vgoCollider.enabled; sphereCollider.isTrigger = vgoCollider.isTrigger; sphereCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); sphereCollider.radius = vgoCollider.radius; sphereCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } }
/// <summary> /// Adds a Collider component to the game object. /// </summary> /// <typeparam name="T">The type of the component to add.</typeparam> /// <param name="go"></param> /// <param name="vgoCollider"></param> /// <returns>Returns Collider component if successful, null otherwise.</returns> public static Collider AddComponent <T>(this GameObject go, VGO_Collider vgoCollider) where T : Collider { if (vgoCollider == null) { return(null); } Collider collider; switch (vgoCollider.type) { case ColliderType.Box: collider = go.AddComponent <BoxCollider>(); break; case ColliderType.Capsule: collider = go.AddComponent <CapsuleCollider>(); break; case ColliderType.Sphere: collider = go.AddComponent <SphereCollider>(); break; default: collider = null; break; } if (collider != null) { VgoColliderConverter.SetComponentValue(collider, vgoCollider); } return(collider); }