Beispiel #1
0
        void OnEnable()
        {
            string version = CaronteSharp.Caronte.GetNativeDllVersion();
            string versionTypeName;

            if (CarVersionChecker.IsFreeVersion())
            {
                versionTypeName = " FREE";
                versionType_    = VersionType.Free;
            }
            else if (CarVersionChecker.IsPremiumVersion())
            {
                if (CarVersionChecker.IsEvaluationVersion())
                {
                    versionTypeName = " PREMIUM TRIAL";
                    versionType_    = VersionType.Premium | VersionType.Evaluation;
                }
                else
                {
                    versionTypeName = " PREMIUM";
                    versionType_    = VersionType.Premium;
                }
            }
            else // PRO VERSION
            {
                if (CarVersionChecker.IsEvaluationVersion())
                {
                    versionTypeName = " PRO TRIAL";
                    versionType_    = VersionType.Pro | VersionType.Evaluation;
                }
                else
                {
                    versionTypeName = " PRO";
                    versionType_    = VersionType.Pro;
                }
            }

            if (CarVersionChecker.DoVersionExpires())
            {
                expirationDateTime_ = CarVersionChecker.GetExpirationDateDateInSeconds();
            }

            if (CarVersionChecker.IsAdvanceCompressionVersion())
            {
                compressionType_ = CompressionType.Advanced;
            }
            else
            {
                compressionType_ = CompressionType.Normal;
            }

            companyIcon_   = CarEditorResource.LoadEditorTexture(CarVersionChecker.CompanyIconName);
            versionString_ = "Version: " + version + versionTypeName + " \n(Compression type: " + compressionType_.ToString() + ")";
        }
        void OnEnable()
        {
            activeAnimationTextProp_  = serializedObject.FindProperty("activeAnimationText");
            activeAnimationAssetProp_ = serializedObject.FindProperty("activeAnimation");

            decondeInGPUProp_       = serializedObject.FindProperty("decodeInGPU_");
            bufferAllFramesProp_    = serializedObject.FindProperty("bufferAllFrames_");
            gpuFrameBufferSizeProp_ = serializedObject.FindProperty("gpuFrameBufferSize_");
            overrideShaderForVertexAnimationProp_ = serializedObject.FindProperty("overrideShaderForVertexAnimation_");
            useDoubleSidedShaderProp_             = serializedObject.FindProperty("useDoubleSidedShader_");
            recomputeNormalsProp_ = serializedObject.FindProperty("recomputeNormals_");

            ac_          = (CRAnimation)target;
            editorFrame_ = Mathf.Max(ac_.LastReadFrame, 0);
            SetAnimationPreviewMode();

            LoadCaronteIcon();

            playerPremiumVersion_ = CarVersionChecker.IsPremiumVersion();
        }
Beispiel #3
0
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 180f;

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                DrawDoCollide();
                DrawDoAutocollide();
                DrawDisableCollisionsAtJoints();
                EditorGUILayout.Space();

                DrawGUIMassOptions();

                GUILayout.Space(simple_space);
                DrawCollisionRadius();
                DrawSafeModeIntegration();
                if (CarVersionChecker.IsPremiumVersion())
                {
                    DrawClothGrouping();
                }

                GUILayout.Space(simple_space);
                DrawBendStiffness();
                DrawStretchStiffness();
                GUILayout.Space(simple_space);
                DrawDampingBend();
                DrawDampingStretch();
                GUILayout.Space(simple_space);

                CarGUIUtils.Splitter();
                GUILayout.Space(simple_space);

                DrawRestitution();
                DrawFrictionKinetic();

                GUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(Data.FromKinetic);
                DrawFrictionStatic();
                EditorGUI.EndDisabledGroup();
                DrawFrictionStaticFromKinetic();
                GUILayout.EndHorizontal();

                GUILayout.Space(simple_space);
                DrawDampingPerSecondWorld();
                GUILayout.Space(simple_space);

                bool currentMode = EditorGUIUtility.wideMode;
                EditorGUIUtility.wideMode = true;
                DrawLinearVelocity();
                DrawAngularVelocity();

                CarGUIUtils.Splitter();
                GUILayout.Space(simple_space);
                DrawExplosionOpacity();
                DrawExplosionResponsiveness();
                EditorGUIUtility.wideMode = currentMode;
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUILayout.Space();
            EditorGUILayout.EndScrollView();
        }
        private void DrawCustomColliderFields()
        {
            Caronte_Fx_Body     component = (Caronte_Fx_Body)target;
            SkinnedMeshRenderer smr       = component.GetComponent <SkinnedMeshRenderer>();

            if (smr == null)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedColliderType_, new GUIContent("Collider"));
                EditorGUILayout.EndHorizontal();

                Color curColor = GUI.contentColor;
                if (serializedColliderType_.enumValueIndex == 2)
                {
                    GUI.contentColor = Color.green;
                }
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedColliderMesh_, new GUIContent("Custom Mesh"));
                GUI.contentColor = curColor;
                EditorGUILayout.EndHorizontal();

                if (serializedColliderType_.enumValueIndex == 3)
                {
                    GUI.contentColor = Color.green;
                }
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedColliderGameObject_, new GUIContent("Custom GameObject"));
                GUI.contentColor = curColor;
                EditorGUILayout.EndHorizontal();


                if (!CarVersionChecker.IsPremiumVersion())
                {
                    EditorGUI.BeginDisabledGroup(true);
                }

                if (serializedColliderType_.enumValueIndex == 4)
                {
                    GUI.contentColor = Color.green;
                }
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedBalltreeAsset_, new GUIContent("Balltree Asset"));
                GUI.contentColor = curColor;
                EditorGUILayout.EndHorizontal();

                if (!CarVersionChecker.IsPremiumVersion())
                {
                    EditorGUI.EndDisabledGroup();
                }


                if (!CarVersionChecker.IsPremiumVersion() && serializedColliderType_.enumValueIndex == 4)
                {
                    EditorGUILayout.HelpBox("Balltree assets can only be used in CaronteFX Premium Version.", MessageType.Info);
                }

                EditorGUILayout.Space();
                EditorGUILayout.Space();

                EditorGUILayout.PropertyField(serializedRenderCollider_, new GUIContent("Render collider"));

                EditorGUI.BeginDisabledGroup(cfxBody_.IsUsingBalltree());
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedColliderColor_, new GUIContent("Color"));
                EditorGUILayout.EndHorizontal();
                EditorGUI.EndDisabledGroup();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PropertyField(serializedColliderRenderMode_, new GUIContent("Render mode"));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Space();
            }
        }
        public void DrawRebake()
        {
            EditorGUI.BeginDisabledGroup(true);
            if (crAnimation_.animationFileType == CRAnimation.AnimationFileType.CRAnimationAsset)
            {
                EditorGUILayout.ObjectField("Active animation", crAnimation_.activeAnimation, typeof(CRAnimationAsset), true);
            }
            else if (crAnimation_.animationFileType == CRAnimation.AnimationFileType.TextAsset)
            {
                EditorGUILayout.ObjectField("Active animation", crAnimation_.activeAnimationText, typeof(TextAsset), true);
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();

            float start = EditorGUILayout.IntField("Frame Start : ", trimFrameStart_);
            float end   = EditorGUILayout.IntField("Frame End   : ", trimFrameEnd_);

            EditorGUILayout.MinMaxSlider(new GUIContent("Frames:"), ref start, ref end, 0, trimFrameLast_);
            SetStartEndFrames((int)start, (int)end);

            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(true);
            int actualFrameStart = createLoopableBake_ ? trimFrameStart_ + transitionFrames_ : trimFrameStart_;

            EditorGUILayout.IntField("Actual frame start", actualFrameStart);
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            int actualFrameCount = createLoopableBake_ ? trimFrameEnd_ - trimFrameStart_ - transitionFrames_ : trimFrameEnd_ - trimFrameStart_;

            EditorGUILayout.IntField("Actual frame count", actualFrameCount);
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            EditorGUILayout.FloatField("Actual time", actualFrameCount * crAnimation_.FrameTime);
            EditorGUI.EndDisabledGroup();

            if (CarVersionChecker.IsPremiumVersion())
            {
                EditorGUILayout.Space();

                createLoopableBake_ = EditorGUILayout.Toggle("Create loop", createLoopableBake_);
                EditorGUI.BeginDisabledGroup(!createLoopableBake_);
                int frameCount    = trimFrameEnd_ - trimFrameStart_ + 1;
                int maxLoopFrames = frameCount / 2;
                transitionFrames_ = Mathf.Clamp(Mathf.Min(EditorGUILayout.IntField("Loop frames", transitionFrames_), maxLoopFrames), 0, int.MaxValue);
                EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Space();
            vertexCompression_ = EditorGUILayout.Toggle("Vertex compression", vertexCompression_);

            EditorGUI.BeginDisabledGroup(!vertexCompression_);
            vertexCompressionIdx_ = EditorGUILayout.Popup("Compression mode", vertexCompressionIdx_, arrVertexCompressionModes_);
            EditorGUI.EndDisabledGroup();

            bool isFiberCompression = vertexCompression_ && vertexCompressionIdx_ == 1;

            EditorGUI.BeginDisabledGroup(isFiberCompression);
            saveTangents_ = EditorGUILayout.Toggle("Save tangents", saveTangents_);
            EditorGUI.EndDisabledGroup();

            alignData_ = EditorGUILayout.Toggle("Align data", alignData_);

            EditorGUI.BeginDisabledGroup(createLoopableBake_);
            bakeEvents_ = EditorGUILayout.Toggle("Bake events", bakeEvents_);
            EditorGUI.EndDisabledGroup();

            GUILayout.FlexibleSpace();
            CarGUIUtils.Splitter();

            if (GUILayout.Button("Rebake animation"))
            {
                if (trimFrameEnd_ <= trimFrameStart_)
                {
                    EditorUtility.DisplayDialog("CaronteFX - Invalid frames", "Frame End must be above Frame Start", "Ok");
                    return;
                }
                bool isTextAsset = crAnimation_.animationFileType == CRAnimation.AnimationFileType.TextAsset;
                RebakeClip(isTextAsset);
            }
        }