Ejemplo n.º 1
0
        protected override void OnStartRunning()
        {
            base.OnStartRunning();
            if (initialized)
            {
                return;
            }
#if DEBUG
            Debug.Log("HTML Window init.");
#endif
            try
            {
                initialized = HTMLNativeCalls.init();
            }
            catch
            {
                Console.WriteLine("  Excepted (Is lib_unity_tiny2d_html.dll missing?).");
                initialized = false;
            }
            if (!initialized)
            {
                Console.WriteLine("  Failed.");
                return;
            }

            UpdateDisplayInfo(firstTime: true);
        }
Ejemplo n.º 2
0
 protected override void OnDestroy()
 {
     // close window
     Console.WriteLine("HTML Window shutdown.");
     HTMLNativeCalls.shutdown(0);
     base.OnDestroy();
 }
Ejemplo n.º 3
0
        private void UpdateDisplayInfo(bool firstTime)
        {
            var di = GetSingleton <DisplayInfo>();

            // TODO DOTSR-994 -- screenDpiScale is being used as both user configuration and information here
            if (di.screenDpiScale == 0.0f)
            {
                di.screenDpiScale = HTMLNativeCalls.getDPIScale();
            }

            HTMLNativeCalls.getScreenSize(ref di.screenWidth, ref di.screenHeight);
            HTMLNativeCalls.getFrameSize(ref di.frameWidth, ref di.frameHeight);

            int wCanvas = 0, hCanvas = 0;

            if (firstTime)
            {
                // TODO DOTSR-994 -- this is a case where we're using width/height as read/write instead of as explicit read or write only
                wCanvas = di.width;
                hCanvas = di.height;
            }
            else
            {
                HTMLNativeCalls.getCanvasSize(ref wCanvas, ref hCanvas);
            }

            if (di.autoSizeToFrame)
            {
                di.width  = (int)(di.frameWidth * di.screenDpiScale);
                di.height = (int)(di.frameHeight * di.screenDpiScale);
                wCanvas   = di.frameWidth;
                hCanvas   = di.frameHeight;
            }
            else if (firstTime)
            {
                di.width  = (int)(di.width * di.screenDpiScale);
                di.height = (int)(di.height * di.screenDpiScale);
            }

            di.framebufferWidth  = di.width;
            di.framebufferHeight = di.height;

            unsafe
            {
                if (firstTime || UnsafeUtility.MemCmp(UnsafeUtility.AddressOf(ref di), UnsafeUtility.AddressOf(ref lastDisplayInfo), sizeof(DisplayInfo)) != 0)
                {
                    // Only do this if it's the first time, or if the struct values actually changed from the last time we set it
#if DEBUG
                    Debug.Log($"setCanvasSize {firstTime} {wCanvas}px {hCanvas}px (backing {di.framebufferWidth} {di.framebufferHeight}, dpi scale {di.screenDpiScale})");
#endif
                    HTMLNativeCalls.setCanvasSize(wCanvas, hCanvas, di.framebufferWidth, di.framebufferHeight);
                    SetSingleton(di);
                    lastDisplayInfo = di;
                }
            }
        }
Ejemplo n.º 4
0
        public override void DebugReadbackImage(out int w, out int h, out NativeArray <byte> pixels)
        {
            var displayInfo = GetSingleton <DisplayInfo>();

            pixels = new NativeArray <byte>(displayInfo.framebufferWidth * displayInfo.framebufferHeight * 4, Allocator.Persistent);
            unsafe
            {
                HTMLNativeCalls.debugReadback(displayInfo.framebufferWidth, displayInfo.framebufferHeight, pixels.GetUnsafePtr());
            }

            w = displayInfo.framebufferWidth;
            h = displayInfo.framebufferHeight;
        }
Ejemplo n.º 5
0
        public override void DebugReadbackImage(out int w, out int h, out NativeArray <byte> pixels)
        {
            var env    = World.TinyEnvironment();
            var config = env.GetConfigData <DisplayInfo>();

            pixels = new NativeArray <byte>(config.framebufferWidth * config.framebufferHeight * 4, Allocator.Persistent);
            unsafe
            {
                HTMLNativeCalls.debugReadback(config.framebufferWidth, config.framebufferHeight, pixels.GetUnsafePtr());
            }

            w = config.framebufferWidth;
            h = config.framebufferHeight;
        }
Ejemplo n.º 6
0
        protected override void OnUpdate()
        {
            if (!initialized)
            {
                return;
            }

            UpdateDisplayInfo(firstTime: false);

            var    env          = World.TinyEnvironment();
            double newFrameTime = HTMLNativeCalls.time();
            var    timeData     = env.StepWallRealtimeFrame(newFrameTime - frameTime);

            World.SetTime(timeData);
            frameTime = newFrameTime;
        }
Ejemplo n.º 7
0
        private void UpdateDisplayInfo(bool firstTime)
        {
            var env    = World.TinyEnvironment();
            var config = env.GetConfigData <DisplayInfo>();

            int wCanvas = 0, hCanvas = 0;

            if (firstTime)
            {
                HTMLNativeCalls.getScreenSize(ref config.screenWidth, ref config.screenHeight);
                wCanvas = config.width;
                hCanvas = config.height;
            }
            else
            {
                HTMLNativeCalls.getCanvasSize(ref wCanvas, ref hCanvas);
            }

            HTMLNativeCalls.getFrameSize(ref config.frameWidth, ref config.frameHeight);
            if (config.autoSizeToFrame)
            {
                config.width  = config.frameWidth;
                config.height = config.frameHeight;
            }

            if (firstTime || wCanvas != config.width || hCanvas != config.height)
            {
#if DEBUG
                Debug.Log($"setCanvasSize {config.width} {config.height}");
#endif
                HTMLNativeCalls.setCanvasSizeAndMode(config.width, config.height, 2);
                config.framebufferWidth  = config.width;
                config.framebufferHeight = config.height;
            }

            env.SetConfigData(config);
        }
Ejemplo n.º 8
0
 private void SetCallbacks()
 {
     HTMLNativeCalls.setDestroyCallback(Marshal.GetFunctionPointerForDelegate((Action)ManagedOnDestroyCallback));
     HTMLNativeCalls.setPauseCallback(Marshal.GetFunctionPointerForDelegate((Action <int>)ManagedOnPauseCallback));
 }