コード例 #1
0
ファイル: CarBodyUtils.cs プロジェクト: kingBook/unity_demos
        //-----------------------------------------------------------------------------------
        public static bool HasValidColliderMesh(GameObject go)
        {
            Caronte_Fx_Body bodyComponent = go.GetComponent <Caronte_Fx_Body>();

            if (bodyComponent != null)
            {
                return(bodyComponent.HasValidCollider());
            }
            return(false);
        }
コード例 #2
0
        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;
                    }
                }
            }
        }
コード例 #3
0
ファイル: CarBodyUtils.cs プロジェクト: kingBook/unity_demos
        //-----------------------------------------------------------------------------------
        public static bool AddBodyComponentIfHasMeshReturnHasValidColliderOrBalltree(GameObject go)
        {
            Caronte_Fx_Body bodyComponent = AddBodyComponentIfHasMesh(go);

            return(bodyComponent != null && (bodyComponent.HasValidCollider() || bodyComponent.IsUsingBalltree()));
        }
コード例 #4
0
ファイル: CarBodyUtils.cs プロジェクト: kingBook/unity_demos
        //-----------------------------------------------------------------------------------
        public static bool AddBodyComponentIfHasMeshReturnHasValidCollider(GameObject go)
        {
            Caronte_Fx_Body bodyComponent = AddBodyComponentIfHasMesh(go);

            return(bodyComponent != null && bodyComponent.HasValidCollider());
        }
コード例 #5
0
        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);
        }