コード例 #1
0
        private bool AreFingerprintsValidNonAnimatedByArrPos()
        {
            bool isValid = true;

            Mesh renderMesh = gameObject_.GetMesh();

            byte[] fingerPrint = new byte[256];
            if (renderFingerprint_ != null)
            {
                if (renderMesh != null)
                {
                    CRGeometryUtils.CalculateFingerprint(renderMesh, fingerPrint);
                    isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, renderFingerprint_);
                }
                else
                {
                    return(false);
                }
            }

            if (colliderFingerprint_ != null)
            {
                Caronte_Fx_Body fxBody = gameObject_.GetComponent <Caronte_Fx_Body>();
                if (fxBody != null)
                {
                    if (fxBody.IsConvexHull() != isConvexHull_)
                    {
                        return(false);
                    }

                    if (fxBody.tileMesh_ != null)
                    {
                        CRGeometryUtils.CalculateFingerprint(fxBody.tileMesh_, fingerPrint);
                        isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, colliderFingerprint_);
                    }
                    else if (fxBody.colliderType_ == Caronte_Fx_Body.ColliderType.MeshFilter)
                    {
                        if (renderMesh != null)
                        {
                            CRGeometryUtils.CalculateFingerprint(renderMesh, fingerPrint);
                            isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, colliderFingerprint_);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (fxBody.colliderType_ == Caronte_Fx_Body.ColliderType.MeshFilterConvexHull)
                    {
                        if (renderMesh != null)
                        {
                            CRGeometryUtils.CalculateFingerprint(renderMesh, fingerPrint);
                            isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, colliderFingerprint_);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (fxBody.colliderType_ == Caronte_Fx_Body.ColliderType.CustomMesh)
                    {
                        Mesh colliderMesh = fxBody.colliderMesh_;
                        if (colliderMesh != null)
                        {
                            CRGeometryUtils.CalculateFingerprint(colliderMesh, fingerPrint);
                            isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, colliderFingerprint_);
                        }
                        else if (renderMesh != null)
                        {
                            CRGeometryUtils.CalculateFingerprint(renderMesh, fingerPrint);
                            isValid &= CRGeometryUtils.AreFingerprintsEqual(fingerPrint, colliderFingerprint_);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                else
                {
                    return(false);
                }
            }
            return(isValid);
        }