Пример #1
0
    // -- Sprオブジェクトの構築を行う
    public override ObjectIf Build()
    {
        SEH_Exception.init();

        PHSceneIf phScene;

        if (enableDebugWindow)
        {
            fwApp = new FWApp();
            fwApp.InitInNewThread();

            // FWAppの初期化が終わるまで待つ
            while (fwApp.GetSdk() == null || fwApp.GetSdk().GetPHSdk() == null)
            {
                System.Threading.Thread.Sleep(10);
            }

            phSdk   = fwApp.GetSdk().GetPHSdk();
            phScene = fwApp.GetSdk().GetScene(0).GetPHScene();
            phScene.Clear();
            phScene.SetDesc((PHSceneDesc)desc);

            FWSceneIf fwSceneIf = fwApp.GetSdk().GetScene(0);
            fwSceneIf.EnableRenderContact(true);
            fwSceneIf.EnableRenderForce(false, true);
            //fwSceneIf.SetForceScale(0.01f, 0.01f);
        }
        else
        {
            phSdk   = PHSdkIf.CreateSdk();
            phScene = phSdk.CreateScene((PHSceneDesc)desc);
        }

        return(phScene);
    }
Пример #2
0
    // ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
    // MonoBehaviourのメソッド

    void Awake()
    {
        if (!enabled)
        {
            return;
        }

        if (app == null)
        {
            app = new FWApp();

            app.CreateSdk();

            FWSceneIf fwScene = app.GetSdk().CreateScene(new PHSceneDesc(), new GRSceneDesc());
            fwScene.SetRenderMode(true, true);
            fwScene.EnableRenderPHScene(true);
            fwScene.EnableRenderForce(true, true);

            GRDeviceIf device = app.GRInit();

            FWWinIf nullwin = new FWWinIf(); nullwin._this = (System.IntPtr) 0;
            FWWinIf win     = app.CreateWin(new FWWinDesc(), nullwin);

            mainloop = new Thread(new ThreadStart(MainLoop));
            mainloop.Start();
        }
    }
Пример #3
0
 private void OnDestroy()
 {
     if (fwApp != null)
     {
         fwApp.EndThread();
         fwApp = null;
         if (phSdk != null)
         {
             phSdk.Clear();
             phSdk = null;
         }
     }
 }
Пример #4
0
        static void test_func_args()
        {
            test_name("function arguments");

            // 引数をちゃんと設定しないと例外が起きる!!
            if (brk != "y")
            {
                return;
            }

            // default argument
            FWApp     app   = new FWApp();
            FWWinDesc desc  = new FWWinDesc();
            FWWinIf   winif = new FWWinIf();

            try { FWWinIf win1 = app.CreateWin(); }
            catch (System.Exception e) { put(SEH_Exception.what(e)); }
            try { FWWinIf win2 = app.CreateWin(desc); }
            catch (System.Exception e) { put(SEH_Exception.what(e)); }
            try { FWWinIf win3 = app.CreateWin(desc, winif); }
            catch (System.Exception e) { put(SEH_Exception.what(e)); }

            // NULL pointer as argument
            try { FWWinIf win4 = app.CreateWin(desc, null); }
            catch (System.Exception e) { put(SEH_Exception.what(e)); }

            // これ以降のコードは正常には動作はしない - 例外が起きて停止する。
            // デバッガで止めて値を確認すること。
            //
            if (brk != "y")
            {
                return;
            }

            // [int]
            CDShapePairIf shapePairIf = new CDShapePairIf();

            shapePairIf.GetShape(123);
        }
Пример #5
0
    // -- Sprオブジェクトの構築を行う
    public override ObjectIf Build()
    {
        SEH_Exception.init();

        FWAppBehaviour appB = GetComponent <FWAppBehaviour>();

        PHSceneIf phScene;

        if (appB != null)
        {
            FWApp app = FWAppBehaviour.app;
            phSdk   = app.GetSdk().GetPHSdk();
            phScene = app.GetSdk().GetScene(0).GetPHScene();
            phScene.Clear();
            phScene.SetDesc((PHSceneDesc)desc);
        }
        else
        {
            phSdk   = PHSdkIf.CreateSdk();
            phScene = phSdk.CreateScene((PHSceneDesc)desc);
        }

        return(phScene);
    }