//----------------------------------------------------------------------------------- public static bool HasValidColliderMesh(GameObject go) { Caronte_Fx_Body bodyComponent = go.GetComponent <Caronte_Fx_Body>(); if (bodyComponent != null) { return(bodyComponent.HasValidCollider()); } return(false); }
public CarCreationData(GameObject go, Mesh renderMesh, Mesh colliderMesh, CRBalltreeAsset btAsset, bool isRope) { gameObject_ = go; isRope_ = isRope; positionRotationCanBeUpdated_ = true; renderFingerprint_ = null; colliderFingerprint_ = null; btAsset_ = btAsset; if (renderMesh != null) { renderFingerprint_ = new byte[256]; CarGeometryUtils.CalculateFingerprint(renderMesh, renderFingerprint_); } if (colliderMesh != null) { colliderFingerprint_ = new byte[256]; CarGeometryUtils.CalculateFingerprint(colliderMesh, colliderFingerprint_); } position_ = go.transform.position; rotation_ = go.transform.rotation; lossyScale_ = go.transform.lossyScale; positionCollider_ = Vector3.zero; rotationCollider_ = Quaternion.identity; lossyScaleCollider_ = Vector3.one; Caronte_Fx_Body fxBody = go.GetComponent <Caronte_Fx_Body>(); if (fxBody != null) { colliderType_ = fxBody.ColliderType; hasValidCollider_ = fxBody.HasValidCollider(); if (colliderType_ == Caronte_Fx_Body.EColliderType.CustomGameObject) { GameObject goCollider = fxBody.GetColliderGameObject(); if (goCollider != null) { positionCollider_ = goCollider.transform.position; rotationCollider_ = goCollider.transform.rotation; lossyScaleCollider_ = goCollider.transform.lossyScale; } } } }
//----------------------------------------------------------------------------------- public static bool AddBodyComponentIfHasMeshReturnHasValidColliderOrBalltree(GameObject go) { Caronte_Fx_Body bodyComponent = AddBodyComponentIfHasMesh(go); return(bodyComponent != null && (bodyComponent.HasValidCollider() || bodyComponent.IsUsingBalltree())); }
//----------------------------------------------------------------------------------- public static bool AddBodyComponentIfHasMeshReturnHasValidCollider(GameObject go) { Caronte_Fx_Body bodyComponent = AddBodyComponentIfHasMesh(go); return(bodyComponent != null && bodyComponent.HasValidCollider()); }
private bool AreMeshChecksValid(Caronte_Fx_Body fxBody) { if (colliderType_ != fxBody.ColliderType) { return(false); } if (hasValidCollider_ != fxBody.HasValidCollider()) { return(false); } if (btAsset_ != fxBody.GetBalltreeAsset()) { return(false); } else { Mesh colliderMesh; bool isBakedMesh = false; if (isRope_) { colliderMesh = fxBody.GetTileMesh(); } else { isBakedMesh = fxBody.GetColliderMesh(out colliderMesh); } if (colliderFingerprint_ == null && colliderMesh != null || colliderFingerprint_ != null && colliderMesh == null) { if (isBakedMesh) { Object.DestroyImmediate(colliderMesh); } return(false); } if (isBakedMesh) { Object.DestroyImmediate(colliderMesh); } } { Mesh renderMesh; bool isBakedMesh = fxBody.GetRenderMesh(out renderMesh); if (renderFingerprint_ == null && renderMesh != null || renderFingerprint_ != null && renderMesh == null) { if (isBakedMesh) { Object.DestroyImmediate(renderMesh); } return(false); } if (isBakedMesh) { Object.DestroyImmediate(renderMesh); } } return(true); }