public override void OnInspectorGUI()
    {
        Script_SpriteStudio_DrawManagerView Data = (Script_SpriteStudio_DrawManagerView)target;

        EditorGUILayout.LabelField("[SpriteStudio DrawManager]");
        int LevelIndent = 0;

        EditorGUILayout.Space();
        FoldOutDrawSetting = EditorGUILayout.Foldout(FoldOutDrawSetting, "Rendering Setting");
        if (true == FoldOutDrawSetting)
        {
            EditorGUI.indentLevel = LevelIndent + 1;

            int   CountKindQueue = (int)Library_SpriteStudio.DrawManager.KindDrawQueue.OVERLAY + 1;
            int[] IndexDrawKind  = new int[CountKindQueue];
            for (int i = 0; i < CountKindQueue; i++)
            {
                IndexDrawKind[i] = i;
            }
            int KindRenderQueueBaseNo = (int)Data.KindRenderQueueBase;
            KindRenderQueueBaseNo    = EditorGUILayout.IntPopup("Render-Queue Base", KindRenderQueueBaseNo, NameDrawKind, IndexDrawKind);
            Data.KindRenderQueueBase = (Library_SpriteStudio.DrawManager.KindDrawQueue)KindRenderQueueBaseNo;
            EditorGUI.indentLevel    = LevelIndent + 2;
            EditorGUILayout.LabelField("Details [" + NameDrawKind[KindRenderQueueBaseNo] + "]");
            switch ((Library_SpriteStudio.DrawManager.KindDrawQueue)KindRenderQueueBaseNo)
            {
            case Library_SpriteStudio.DrawManager.KindDrawQueue.SHADER_SETTING:
                EditorGUILayout.LabelField("- Value Base: Defined Tag\"Queue\" in Shader (Default: Transparent)");
                EditorGUILayout.LabelField("- Offset Range: Depend on Tag\"Queue\"(Default: 0-999)");
                break;

            case Library_SpriteStudio.DrawManager.KindDrawQueue.USER_SETTING:
                EditorGUILayout.LabelField("- Value Base: 0");
                EditorGUILayout.LabelField("- Offset Range: 1000-4999");
                break;

            default:
                EditorGUILayout.LabelField("- Value Base: " + Library_SpriteStudio.DrawManager.ValueKindDrawQueue[KindRenderQueueBaseNo]);
                EditorGUILayout.LabelField("- Offset Range: 0-" + (Library_SpriteStudio.DrawManager.ValueKindDrawQueue[KindRenderQueueBaseNo + 1] - Library_SpriteStudio.DrawManager.ValueKindDrawQueue[KindRenderQueueBaseNo] - 1));
                break;
            }
            EditorGUI.indentLevel = LevelIndent + 1;

            EditorGUILayout.Space();
            Data.OffsetDrawQueue = EditorGUILayout.IntField("Render-Queue Offset", Data.OffsetDrawQueue);

            EditorGUI.indentLevel = LevelIndent;
        }
        EditorGUILayout.Space();

        if (true == GUI.changed)
        {
            Library_SpriteStudio.DrawManager.ArrayListMeshDraw ArrayListMeshDraw = Data.ArrayListMeshDraw;
            ArrayListMeshDraw.RenderQueueSet(Data.KindRenderQueueBase, Data.OffsetDrawQueue);
            EditorUtility.SetDirty(target);
        }
    }
Beispiel #2
0
    void Start()
    {
        InstanceCameraDraw      = Library_SpriteStudio.Utility.CameraGetParent(gameObject);
        InstanceDrawManagerView = Library_SpriteStudio.Utility.DrawManagerViewGetParent(gameObject);
        rateOpacity             = 1.0f;

        arrayListMeshDraw = new Library_SpriteStudio.DrawManager.ArrayListMeshDraw();
        arrayListMeshDraw.BootUp();

        ListCallBackUserData = new ArrayList();
        ListCallBackUserData.Clear();

        if (null == ListInformationPlay)
        {
            frameNoStart   = 0;
            frameNoEnd     = 0;
            framePerSecond = 0;
        }
        if (0 == (Status & BitStatus.PLAYING))
        {
            AnimationPlay();
        }
    }
Beispiel #3
0
    void Update()
    {
        MainLoopCount++;

        /* Boot-Check */
        if (null == InstanceCameraDraw)
        {
            InstanceCameraDraw = Library_SpriteStudio.Utility.CameraGetParent(gameObject);
        }
        if (null == InstanceDrawManagerView)
        {
            InstanceDrawManagerView = Library_SpriteStudio.Utility.DrawManagerViewGetParent(gameObject);
        }
        if (null == arrayListMeshDraw)
        {
            arrayListMeshDraw = new Library_SpriteStudio.DrawManager.ArrayListMeshDraw();
            arrayListMeshDraw.BootUp();
        }
        if (null == ListCallBackUserData)
        {
            ListCallBackUserData = new ArrayList();
            ListCallBackUserData.Clear();
        }

        /* Entry Object to Draw */
        if ((null != InstanceDrawManagerView) && (null == partsRootOrigin))
        {               /* Not "Instance"-Object */
            if (false == FlagHideForce)
            {
                InstanceDrawManagerView.DrawEntryObject(this);
            }
        }

        /* Animation Update */
        if (null == SpriteStudioData)
        {
            return;
        }

        if (null == ListInformationPlay)
        {
            return;
        }

        if (0 == (Status & BitStatus.PLAYING))
        {
            return;
        }

        if (0 != (Status & BitStatus.PAUSING))
        {
            return;
        }

        int FrameCountNow  = 0;
        int FrameCountEnd  = frameNoEnd - frameNoStart;
        int FrameCountFull = FrameCountEnd + 1;

        float RateTimeProgress  = (0 == (Status & BitStatus.PLAYING_REVERSE)) ? 1.0f : -1.0f;
        float TimeAnimationFull = (float)FrameCountFull * TimeFramePerSecond;

        bool FlagLoop   = false;
        bool FlagReLoop = true;

        /* FrameNo Update */
        Status |= BitStatus.PLAY_FIRST;
        if (-1 != frameNoPrevious)
        {               /* Not Update, Just Starting */
            TimeAnimation += (Time.deltaTime * rateTimePlay) * RateTimeProgress;
            Status        &= ~BitStatus.DECODE_USERDATA;
            Status        &= ~BitStatus.PLAY_FIRST;
        }

        FrameCountNow        = (int)(TimeAnimation / TimeFramePerSecond);
        countLoopThisTime    = 0;
        flagTurnBackPingPong = false;
        flagReversePrevious  = (0 != (Status & BitStatus.PLAYING_REVERSE)) ? true : false;
        Status &= ~BitStatus.REDECODE_INSTANCE;

        if (false == FlagStylePingpong)
        {               /* One-Way */
            if (0 == (Status & BitStatus.PLAYING_REVERSE))
            {           /* Play foward */
                        /* Get Frame Count */
                if (FrameCountEnd < FrameCountNow)
                {       /* Frame-Over */
                    FlagLoop   = true;
                    FlagReLoop = true;
                    while (true == FlagReLoop)
                    {
                        /* Loop-Count Check */
                        if (0 <= CountLoopRemain)
                        {                               /* Limited-Count Loop */
                            CountLoopRemain--;
                            FlagLoop = (0 > CountLoopRemain) ? false : FlagLoop;
                        }

                        /* ReCalculate Frame */
                        if (true == FlagLoop)
                        {                               /* Loop */
                            countLoopThisTime++;

                            /* ReCalculate Frame */
                            TimeAnimation -= TimeAnimationFull;
                            FrameCountNow  = (int)(TimeAnimation / TimeFramePerSecond);
                            FlagReLoop     = (TimeAnimationFull <= TimeAnimation) ? true : false;

                            /* Set Instance Parts Restart Request */
                            Status |= BitStatus.REDECODE_INSTANCE;

                            /* Force-Decode UserData */
                            Status |= BitStatus.DECODE_USERDATA;
                        }
                        else
                        {                               /* End */
                            TimeAnimation = ((float)FrameCountEnd) * TimeFramePerSecond;
                            FrameCountNow = FrameCountEnd;
//							Status &= ~BitStatus.PLAYING;
                            Status    |= BitStatus.REQUEST_PLAYEND;
                            FlagReLoop = false;
                        }
                    }
                }
            }
            else
            {                   /* Play backwards */
                                /* Get Frame Count */
                if (0 > FrameCountNow)
                {               /* Frame-Over */
                    FlagLoop   = true;
                    FlagReLoop = true;
                    while (true == FlagReLoop)
                    {
                        /* Loop-Count Check */
                        if (0 <= CountLoopRemain)
                        {                               /* Limited-Count Loop */
                            CountLoopRemain--;
                            FlagLoop = (0 > CountLoopRemain) ? false : FlagLoop;
                        }

                        /* ReCalculate Frame */
                        if (true == FlagLoop)
                        {                               /* Loop */
                            countLoopThisTime++;

                            /* ReCalculate Frame */
                            TimeAnimation += TimeAnimationFull;
                            FrameCountNow  = (int)(TimeAnimation / TimeFramePerSecond);
                            FlagReLoop     = (0.0f > TimeAnimation) ? true : false;

                            /* Set Instance Parts Restart Request */
                            Status |= BitStatus.REDECODE_INSTANCE;

                            /* Force-Decode UserData */
                            Status |= BitStatus.DECODE_USERDATA;
                        }
                        else
                        {                               /* End */
                            TimeAnimation = 0.0f;
                            FrameCountNow = 0;
//							Status &= ~BitStatus.PLAYING;
                            Status    |= BitStatus.REQUEST_PLAYEND;
                            FlagReLoop = false;
                        }
                    }
                }
            }
        }
        else
        {               /* Ping-Pong */
            if (0 == (Status & BitStatus.STYLE_REVERSE))
            {           /* Style-Normaly */
                FlagReLoop = true;
                while (true == FlagReLoop)
                {
                    FlagReLoop = false;

                    if (0 == (Status & BitStatus.PLAYING_REVERSE))
                    {                           /* Play foward */
                        if (FrameCountEnd < FrameCountNow)
                        {                       /* Frame-Over */
                                                /* Set Turn-Back */
                            Status |= BitStatus.PLAYING_REVERSE;

                            /* ReCalculate Frame */
                            TimeAnimation       -= TimeAnimationFull;
                            TimeAnimation        = TimeAnimationFull - TimeAnimation;
                            FrameCountNow        = (int)(TimeAnimation / TimeFramePerSecond);
                            flagTurnBackPingPong = true;

                            /* Force-Decode UserData */
                            Status |= BitStatus.DECODE_USERDATA;

                            /* Plural Loop Count Check */
                            FlagReLoop = ((TimeAnimationFull > TimeAnimation) && (0.0f <= TimeAnimation)) ? false : true;
                        }
                    }
                    else
                    {                           /* Play backwards */
                        if (0 > FrameCountNow)
                        {                       /* Frame-Over */
                            FlagLoop = true;

                            /* Loop-Count Check */
                            if (0 <= CountLoopRemain)
                            {                                   /* Limited-Count Loop */
                                CountLoopRemain--;
                                FlagLoop = (0 > CountLoopRemain) ? false : FlagLoop;
                            }

                            if (true == FlagLoop)
                            {                                   /* Loop */
                                countLoopThisTime++;

                                /* Set Turn-Back */
                                Status &= ~BitStatus.PLAYING_REVERSE;

                                /* ReCalculate Frame */
                                TimeAnimation       += TimeAnimationFull;
                                TimeAnimation        = TimeAnimationFull - TimeAnimation;
                                FrameCountNow        = (int)(TimeAnimation / TimeFramePerSecond);
                                flagTurnBackPingPong = true;

                                /* Set Instance Parts Restart Request */
                                Status |= BitStatus.REDECODE_INSTANCE;

                                /* Force-Decode UserData */
                                Status |= BitStatus.DECODE_USERDATA;

                                /* Plural Loop Count Check */
                                FlagReLoop = ((TimeAnimationFull > TimeAnimation) && (0.0f <= TimeAnimation)) ? false : true;
                            }
                            else
                            {                                   /* End */
                                TimeAnimation = 0.0f;
                                FrameCountNow = 0;
//								Status &= ~BitStatus.PLAYING;
                                Status    |= BitStatus.REQUEST_PLAYEND;
                                FlagReLoop = false;
                            }
                        }
                    }
                }
            }
            else
            {                   /* Style-Reverse */
                FlagReLoop = true;
                while (true == FlagReLoop)
                {
                    FlagReLoop = false;

                    if (0 != (Status & BitStatus.PLAYING_REVERSE))
                    {                           /* Play backwards */
                        if (0 > FrameCountNow)
                        {                       /* Frame-Over */
                                                /* Set Turn-Back */
                            Status &= ~BitStatus.PLAYING_REVERSE;

                            /* ReCalculate Frame */
                            TimeAnimation       += TimeAnimationFull;
                            TimeAnimation        = TimeAnimationFull - TimeAnimation;
                            FrameCountNow        = (int)(TimeAnimation / TimeFramePerSecond);
                            flagTurnBackPingPong = true;

                            /* Force-Decode UserData */
                            Status |= BitStatus.DECODE_USERDATA;

                            /* Plural Loop Count Check */
                            FlagReLoop = ((TimeAnimationFull > TimeAnimation) && (0.0f <= TimeAnimation)) ? false : true;
                        }
                    }
                    else
                    {                           /* Play foward */
                        if (FrameCountEnd < FrameCountNow)
                        {                       /* Frame-Over */
                            FlagLoop = true;

                            /* Loop-Count Check */
                            if (0 <= CountLoopRemain)
                            {                                   /* Limited-Count Loop */
                                CountLoopRemain--;
                                FlagLoop = (0 > CountLoopRemain) ? false : FlagLoop;
                            }

                            if (true == FlagLoop)
                            {                                   /* Loop */
                                countLoopThisTime++;

                                /* Set Turn-Back */
                                Status |= BitStatus.PLAYING_REVERSE;

                                /* ReCalculate Frame */
                                TimeAnimation       -= TimeAnimationFull;
                                TimeAnimation        = TimeAnimationFull - TimeAnimation;
                                FrameCountNow        = (int)(TimeAnimation / TimeFramePerSecond);
                                flagTurnBackPingPong = true;

                                /* Set Instance Parts Restart Request */
                                Status |= BitStatus.REDECODE_INSTANCE;

                                /* Force-Decode UserData */
                                Status |= BitStatus.DECODE_USERDATA;

                                /* Plural Loop Count Check */
                                FlagReLoop = ((TimeAnimationFull > TimeAnimation) && (0.0f <= TimeAnimation)) ? false : true;
                            }
                            else
                            {                                   /* End */
                                TimeAnimation = ((float)FrameCountEnd) * TimeFramePerSecond;
                                FrameCountNow = FrameCountEnd;
//								Status &= ~BitStatus.PLAYING;
                                Status    |= BitStatus.REQUEST_PLAYEND;
                                FlagReLoop = false;
                            }
                        }
                    }
                }
            }
        }

        /* Member-Valiables Update */
        int FrameNoNew = frameNoStart + FrameCountNow;

        if (FrameNoNew != frameNoNow)
        {
            Status |= BitStatus.DECODE_USERDATA;
        }
        frameNoPrevious = frameNoNow;
        frameNoNow      = FrameNoNew;

        /* Update User-CallBack */
        SpriteStudioData.UpdateUserData(frameNoNow, gameObject, this);

        /* Update GameObject */
        SpriteStudioData.UpdateGameObject(gameObject, frameNoNow, false);
    }