Inheritance: MonoBehaviour
コード例 #1
0
    ///////////////////////////////////////////////////////////////////////////////
    // functions
    ///////////////////////////////////////////////////////////////////////////////

    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    void OnEnable()
    {
        if (target != curEdit)
        {
            curEdit = target as exPixelPerfect;
        }
    }
コード例 #2
0
ファイル: exSpriteBase.cs プロジェクト: ShunMc/ex2D
    ///////////////////////////////////////////////////////////////////////////////
    // functions
    ///////////////////////////////////////////////////////////////////////////////

    // ------------------------------------------------------------------
    /// OnEnable functoin inherit from exPlane
    // ------------------------------------------------------------------

    override protected void OnEnable()
    {
        base.OnEnable();
        exPixelPerfect ppf = GetComponent <exPixelPerfect>();

        if (ppf)
        {
            ppf.enabled = true;
        }
    }
コード例 #3
0
    // ------------------------------------------------------------------
    /// OnDisable functoin inherit from exPlane
    // ------------------------------------------------------------------

    protected new void OnDisable()
    {
        base.OnDisable();
        exPixelPerfect ppf = GetComponent <exPixelPerfect>();

        if (ppf)
        {
            ppf.enabled = false;
        }
    }
コード例 #4
0
ファイル: exPixelPerfectEditor.cs プロジェクト: exdev/ex2d-v1
 ///////////////////////////////////////////////////////////////////////////////
 // functions
 ///////////////////////////////////////////////////////////////////////////////
 // ------------------------------------------------------------------
 // Desc:
 // ------------------------------------------------------------------
 void OnEnable()
 {
     if ( target != curEdit ) {
         curEdit = target as exPixelPerfect;
     }
 }
コード例 #5
0
    // ------------------------------------------------------------------
    // Desc:
    // ------------------------------------------------------------------

    public override void OnInspectorGUI()
    {
        // ========================================================
        // exPlane GUI
        // ========================================================

        base.OnInspectorGUI();
        GUILayout.Space(20);

        EditorGUIUtility.LookLikeInspector();
        ++EditorGUI.indentLevel;

        // ========================================================
        // Collision Type
        // ========================================================

        GUI.enabled = !inAnimMode;
        EditorGUIUtility.LookLikeControls();
        CollisionType newCollisionType = (CollisionType)EditorGUILayout.EnumPopup("Collision Type", collisionType, GUILayout.Width(200));

        EditorGUIUtility.LookLikeInspector();
        GUI.enabled = true;

        //
        if (newCollisionType != collisionType)
        {
            collisionType = newCollisionType;

            Collider myCollider = editSpriteBase.GetComponent <Collider>();
            if (myCollider != null)
            {
                if (myCollider is MeshCollider)
                {
                    Object.DestroyImmediate((myCollider as MeshCollider).sharedMesh, true);
                }
                Object.DestroyImmediate(myCollider, true);
            }

            switch (collisionType)
            {
            case CollisionType.None: break;

            case CollisionType.Boxed: editSpriteBase.gameObject.AddComponent <BoxCollider>(); break;

            case CollisionType.Mesh: editSpriteBase.gameObject.AddComponent <MeshCollider>(); break;
            }
            if (editSpriteBase.collisionHelper)
            {
                editSpriteBase.collisionHelper.UpdateCollider();
            }
        }

        GUILayout.BeginHorizontal();

        // ========================================================
        // use collision helper
        // ========================================================

        GUILayout.Space(15);
        GUI.enabled = !inAnimMode;
        exCollisionHelper compCollisionHelper = editSpriteBase.collisionHelper;
        bool hasCollisionHelperComp           = compCollisionHelper != null;
        bool useCollisionHelper = GUILayout.Toggle(hasCollisionHelperComp, "Use Collision Helper");

        if (useCollisionHelper != hasCollisionHelperComp)
        {
            if (useCollisionHelper)
            {
                compCollisionHelper       = editSpriteBase.gameObject.AddComponent <exCollisionHelper>();
                compCollisionHelper.plane = editSpriteBase;
                compCollisionHelper.UpdateCollider();
            }
            else
            {
                Object.DestroyImmediate(compCollisionHelper, true);
            }
            GUI.changed = true;
        }
        GUI.enabled = true;

        // ========================================================
        // sync button
        // ========================================================

        GUILayout.FlexibleSpace();
        GUI.enabled = (isPrefab == false) && (useCollisionHelper == false);
        if (GUILayout.Button("Sync"))
        {
            editSpriteBase.UpdateColliderSize(0.2f);
        }
        GUI.enabled = true;
        GUILayout.EndHorizontal();

        // ========================================================
        // use pixel perfect
        // ========================================================

        GUILayout.BeginHorizontal();
        GUILayout.Space(15);
        GUI.enabled = !inAnimMode;
        exPixelPerfect compPixelPerfect         = editSpriteBase.GetComponent <exPixelPerfect>();
        bool           hasPixelPerfectComponent = compPixelPerfect != null;
        bool           usePixelPerfect          = GUILayout.Toggle(hasPixelPerfectComponent, "Use Pixel Perfect");

        if (usePixelPerfect != hasPixelPerfectComponent)
        {
            if (usePixelPerfect)
            {
                editSpriteBase.gameObject.AddComponent <exPixelPerfect>();
            }
            else
            {
                Object.DestroyImmediate(compPixelPerfect, true);
            }
            GUI.changed = true;
        }
        GUI.enabled = true;
        GUILayout.EndHorizontal();

        // ========================================================
        // scale
        // ========================================================

        EditorGUIUtility.LookLikeControls();
        editSpriteBase.scale = EditorGUILayout.Vector2Field("Scale", editSpriteBase.scale);
        EditorGUIUtility.LookLikeInspector();

        // ========================================================
        // HFlip, VFlip, Reset to Pixel Perfect
        // ========================================================

        bool flip    = false;
        bool newflip = false;

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        // DISABLE: the current version not allow I do this, just click "Use PixelPerfect" and re-click for the feature {
        // // reset to pixel perfect
        // if ( GUILayout.Button( "Reset to pixel perfect..." ) ) {
        //     if ( editSprite != null ) {
        //         editSprite.customSize = false;
        //     }
        //     editSpriteBase.MakePixelPerfect ( Camera.main,
        //                                     PlayerSettings.defaultScreenWidth,
        //                                     PlayerSettings.defaultScreenHeight );
        //     GUI.changed = true;
        // }
        // } DISABLE end
        // h-flip
        flip    = Mathf.Sign(editSpriteBase.scale.x) < 0.0f;
        newflip = GUILayout.Toggle(flip, "H-Flip", GUI.skin.button);
        if (newflip != flip)
        {
            float s = newflip ? -1.0f : 1.0f;
            editSpriteBase.scale = new Vector2(s * Mathf.Abs(editSpriteBase.scale.x),
                                               editSpriteBase.scale.y);
            GUI.changed = true;
        }

        // v-flip
        flip    = Mathf.Sign(editSpriteBase.scale.y) < 0.0f;
        newflip = GUILayout.Toggle(flip, "V-Flip", GUI.skin.button);
        if (newflip != flip)
        {
            float s = newflip ? -1.0f : 1.0f;
            editSpriteBase.scale = new Vector2(editSpriteBase.scale.x,
                                               s * Mathf.Abs(editSpriteBase.scale.y));
            GUI.changed = true;
        }
        GUILayout.EndHorizontal();

        // ========================================================
        // shear
        // ========================================================

        EditorGUIUtility.LookLikeControls();
        editSpriteBase.shear = EditorGUILayout.Vector2Field("Shear", editSpriteBase.shear);
        EditorGUIUtility.LookLikeInspector();

        // ========================================================
        // check dirty
        // ========================================================

        if (GUI.changed)
        {
            EditorUtility.SetDirty(editSpriteBase);
        }
        --EditorGUI.indentLevel;
    }