コード例 #1
0
    /// <summary>Clears and entirely destroys the UI and WorldUI's. Calling this is not a requirement and can only be reversed by calling Start again.</summary>
    public static void Destroy()
    {
        ClearAll();

        if (GUINode != null)
        {
            GameObject.Destroy(GUINode);
            GUINode         = null;
            GUICamera       = null;
            CameraNode      = null;
            CameraTransform = null;
        }

        if (GlobalUpdater != null)
        {
            GameObject.Destroy(GlobalUpdater);
            GlobalUpdater = null;
        }

        _Started     = false;
        Variables    = null;
        LastWorldUI  = null;
        FirstWorldUI = null;

        // Clear batch pool:
        UIBatchPool.Clear();
    }
コード例 #2
0
    /// <summary>Used internally - don't call this one. Startup the UI for use in the Editor with AOT Nitro.</summary>
    /// <param name="nitroAot">True if no gameobject should be generated.</param>
    public static void Start(bool nitroAot)
    {
        if (_Started)
        {
            return;
        }

        _Started = true;

        // Setup atlas stacks:
        AtlasStacks.Start();

        // Hookup the wrench logging method:
        Dom.Log.OnLog += OnLogMessage;

        // Hookup the InfiniText logging method:
        InfiniText.Fonts.OnLog += OnLogMessage;

                #if !NoBIDI
        // Setup bidi character metadata:
        InfiniText.DirectionCategory.Setup();
                #endif

        // Setup the character entities such as &nbsp;
        CharacterEntities.Setup();

        // Start modules now! UI is always available so we use that:
        Modular.Start.Now(typeof(UI));

        // Setup language metadata:
        Languages.globalLoader.Setup();

        // Setup alert/confirm dialogues:
        BlockingDialogues.Setup();

        // Setup input:
        PowerUI.Input.Setup();

        // Setup the text/language service:
        if (Variables == null)
        {
            Variables = new FullVariableSet();

            if (!nitroAot)
            {
                // Sign up to the variable on change event - whenever a custom var is changed, we need to refresh the screen.
                Variables.OnChange += OnVariableChange;
                // Sign on to the event that occurs when the language changes.
                Dom.Text.OnLanguageChanged += OnLanguageChange;
                // Sign on to the event that occurs when the gender changes.
                Dom.Text.OnGenderChanged += ResolveAllVariables;
            }
        }

        // Setup the callback queue:
        Callbacks.Start();

        // Setup the character providers (for e.g. Emoji):
        CharacterProviders.Setup();

        Layer = LayerMask.NameToLayer("PowerUI");

                #if !NO_LAYER_CHECK
        if (Layer < 0)
        {
            // Invalid layer.
                        #if UNITY_EDITOR
            // Create the new layer now (this will actually be a permanent change):
            Layer = PowerUI.LayerManager.Add();
                        #else
            // On device - make one up:
            Layer = 21;
                        #endif
        }
                #endif

        // Default FPS:
        SetRate(DefaultRate);

                #if !NoNitroRuntime
        // Link up the text/javascript type by creating the engine:
        ScriptEngines.Add(new JavaScriptEngine());
                #endif

        if (nitroAot)
        {
            return;
        }

        GUINode = GameObject.Find("#PowerUI");

        if (GUINode == null)
        {
            // Not started yet.

            // Create the UI game object:
            GUINode      = new GameObject();
            GUINode.name = "#PowerUI";

            // Create the camera:
            CameraNode      = new GameObject();
            CameraNode.name = "Camera";

            // Create the updater:
            GlobalUpdater = GUINode.AddComponent <StandardUpdater>();

            // Setup the camera:
            GUICamera = CameraNode.AddComponent <Camera>();

            // Apply the new settings to the camera:
            GUICamera.orthographic = (CurrentCameraMode == CameraMode.Orthographic);
        }
        else
        {
            // Already started, but we might have updated.

            if (CameraNode == null)
            {
                // This can happen if the PowerUI assembly is actively reloaded (e.g. runtime updates).
                CameraNode      = GameObject.Find("#PowerUI/Camera");
                CameraTransform = CameraNode.transform;
                GUICamera       = CameraNode.GetComponent <Camera>();
            }
            else
            {
                // Already started!
                return;
            }
        }

        // Hide the PowerUI layer from all cameras other than GUICamera:
        Camera[] cameras = Camera.allCameras;

        int layerMask = ~(1 << UI.Layer);

        for (int i = 0; i < cameras.Length; i++)
        {
            // Grab the camera:
            Camera camera = cameras[i];

            // Is it the GUICamera?
            if (camera == GUICamera)
            {
                continue;
            }

            // Hide the UI layer from it:
            camera.cullingMask &= layerMask;
        }

        // Setup the transform:
        CameraTransform        = CameraNode.transform;
        CameraTransform.parent = GUINode.transform;

        GUICamera.nearClipPlane = 0.2f;
        GUICamera.depth         = CameraDepth;
        GUICamera.clearFlags    = CameraClearFlags.Depth;
        GUICamera.cullingMask   = (1 << UI.Layer);
        GUICamera.renderingPath = RenderingPath.Forward;

        SetCameraDistance(60f);
        SetFieldOfView(60f);

        Renderer = new Renderman();

        // Render Mesh.OutputGameObject with the GUI camera:
        Renderer.RenderWithCamera(UI.Layer);
        document            = Renderer.RootDocument as HtmlDocument;
        document.window.top = document.window;

        // Fire the camera event:
        CameraGotCreated(GUICamera);
    }
コード例 #3
0
ファイル: UI.cs プロジェクト: KMarshland/ChildrensHospitalApp
	/// <summary>Clears and entirely destroys the UI and WorldUI's. Calling this is not a requirement and can only be reversed by calling Start again.</summary>
	public static void Destroy(){
		ClearAll();
		
		if(GUINode!=null){
			GameObject.Destroy(GUINode);
			GUINode=null;
			GUICamera=null;
			CameraNode=null;
			CameraTransform=null;
		}
		
		if(GlobalUpdater!=null){
			GameObject.Destroy(GlobalUpdater);
			GlobalUpdater=null;
		}
		
		Started=false;
		Variables=null;
		LastWorldUI=null;
		FirstWorldUI=null;
		
		// Clear batch pool:
		UIBatchPool.Clear();
	}
コード例 #4
0
ファイル: UI.cs プロジェクト: KMarshland/ChildrensHospitalApp
    /// <summary>Used internally - don't call this one. Startup the UI for use in the Editor with AOT Nitro.</summary>
    /// <param name="nitroAot">True if no gameobject should be generated.</param>
    public static void Start(bool nitroAot)
    {
        if (!Started)
        {
            Started = true;

            // Setup atlas stacks:
            AtlasStacks.Start();

            // Hookup the wrench logging method:
            Wrench.Log.OnLog += OnLogMessage;

            // Hookup the InfiniText logging method:
            InfiniText.Fonts.OnLog += OnLogMessage;

            // Startup the tag handlers:
            Wrench.TagHandlers.Setup();

            // Startup the file protocols (internally also starts up the CSS engine):
            FileProtocols.Setup();

            // Setup the text/language service:
            if (Variables == null)
            {
                Variables = new FullVariableSet();

                if (!nitroAot)
                {
                    // Sign up to the variable on change event - whenever a custom var is changed, we need to refresh the screen.
                    Variables.OnChange += OnVariableChange;
                    // Ensure that variables is set to whatever the default/current language is.
                    OnLanguageChange(Wrench.Text.Language);
                    // Sign on to the event that occurs when the language changes.
                    Wrench.Text.OnLanguageChanged += OnLanguageChange;
                    // Sign on to the event that occurs when the gender changes.
                    Wrench.Text.OnGenderChanged += ResolveAllVariables;
                }
            }

            // Setup the callback queue:
            Callbacks.Start();

            // Setup the character providers (for e.g. Emoji):
            CharacterProviders.Setup();

            Layer = LayerMask.NameToLayer("PowerUI");

            if (Layer < 0)
            {
                // Invalid layer.
                                #if UNITY_EDITOR
                // Create the new layer now (this will actually be a permanent change):
                Layer = PowerUI.LayerManager.Add();
                                #else
                throw new Exception("Error: PowerUI layer not found. Go to Edit->Project Settings->Tags and add a layer called PowerUI to fix this." +
                                    " Don't forget to make sure it doesn't render with your main camera too!"
                                    );
                                #endif
            }

            // Default FPS:
            SetRate(DefaultRate);

                        #if !NoNitroRuntime
            // Setup the compiler:
            NitroCode.Setup();
                        #endif
        }

        if (nitroAot)
        {
            return;
        }

        GUINode = GameObject.Find("#PowerUI");

        if (GUINode == null)
        {
            // Not started yet.

            // Create the UI game object:
            GUINode      = new GameObject();
            GUINode.name = "#PowerUI";

            // Create the camera:
            CameraNode      = new GameObject();
            CameraNode.name = "Camera";

            // Create the updater:
            GlobalUpdater = GUINode.AddComponent <StandardUpdater>();

            // Setup the camera:
            GUICamera = CameraNode.AddComponent <Camera>();
        }
        else
        {
            // Already started, but we might have updated.

            if (CameraNode == null)
            {
                // This can happen if the PowerUI assembly is actively reloaded (e.g. runtime updates).
                CameraNode      = GameObject.Find("#PowerUI/Camera");
                CameraTransform = CameraNode.transform;
                GUICamera       = CameraNode.GetComponent <Camera>();
            }
            else
            {
                // Already started!
                return;
            }
        }

        // Hide the PowerUI layer from all cameras other than GUICamera:
        Camera[] cameras = Camera.allCameras;

        int layerMask = ~(1 << UI.Layer);

        for (int i = 0; i < cameras.Length; i++)
        {
            // Grab the camera:
            Camera camera = cameras[i];

            // Is it the GUICamera?
            if (camera == GUICamera)
            {
                continue;
            }

            // Hide the UI layer from it:
            camera.cullingMask &= layerMask;
        }

        // Setup the transform:
        CameraTransform        = CameraNode.transform;
        CameraTransform.parent = GUINode.transform;

        GUICamera.nearClipPlane = 0.2f;
        GUICamera.depth         = CameraDepth;
        GUICamera.clearFlags    = CameraClearFlags.Depth;
        GUICamera.cullingMask   = (1 << UI.Layer);
        GUICamera.renderingPath = RenderingPath.Forward;

        SetCameraDistance(60f);
        SetFieldOfView(60f);

        Renderer = new Renderman();

        // Render Mesh.OutputGameObject with the GUI camera:
        Renderer.RenderWithCamera(UI.Layer);
        document            = Renderer.RootDocument;
        document.window.top = document.window;

        // Some overriding default UI settings:
        document.html.Style.Computed.ChangeTagProperty("color", new PowerUI.Css.Value("#ffffff", PowerUI.Css.ValueType.Color));
        document.html.Style.Computed.ChangeTagProperty("font-size", new PowerUI.Css.Value("14px", PowerUI.Css.ValueType.Pixels));
        document.body.Style.Computed.ChangeTagProperty("overflow", new PowerUI.Css.Value("hidden hidden", PowerUI.Css.ValueType.Point));

        UpdateTextDirection();

        // Fire the camera event:
        CameraGotCreated(GUICamera);
    }
コード例 #5
0
ファイル: UI.cs プロジェクト: KMarshland/ChildrensHospitalApp
	/// <summary>Used internally - don't call this one. Startup the UI for use in the Editor with AOT Nitro.</summary>
	/// <param name="nitroAot">True if no gameobject should be generated.</param>
	public static void Start(bool nitroAot){
		
		if(!Started){
			Started=true;
			
			// Setup atlas stacks:
			AtlasStacks.Start();
			
			// Hookup the wrench logging method:
			Wrench.Log.OnLog+=OnLogMessage;
			
			// Hookup the InfiniText logging method:
			InfiniText.Fonts.OnLog+=OnLogMessage;
			
			// Startup the tag handlers:
			Wrench.TagHandlers.Setup();
			
			// Startup the file protocols (internally also starts up the CSS engine):
			FileProtocols.Setup();
			
			// Setup the text/language service:
			if(Variables==null){
				Variables=new FullVariableSet();
				
				if(!nitroAot){
					// Sign up to the variable on change event - whenever a custom var is changed, we need to refresh the screen.
					Variables.OnChange+=OnVariableChange;
					// Ensure that variables is set to whatever the default/current language is.
					OnLanguageChange(Wrench.Text.Language);
					// Sign on to the event that occurs when the language changes.
					Wrench.Text.OnLanguageChanged+=OnLanguageChange;
					// Sign on to the event that occurs when the gender changes.
					Wrench.Text.OnGenderChanged+=ResolveAllVariables;
				}
			}
			
			// Setup the callback queue:
			Callbacks.Start();
			
			// Setup the character providers (for e.g. Emoji):
			CharacterProviders.Setup();
			
			Layer=LayerMask.NameToLayer("PowerUI");
			
			if(Layer<0){
				// Invalid layer.
				#if UNITY_EDITOR
				
				// Create the new layer now (this will actually be a permanent change):
				Layer=PowerUI.LayerManager.Add();
				
				#else
				throw new Exception("Error: PowerUI layer not found. Go to Edit->Project Settings->Tags and add a layer called PowerUI to fix this."+
									" Don't forget to make sure it doesn't render with your main camera too!"
									);
				#endif
			}
			
			// Default FPS:
			SetRate(DefaultRate);
			
			#if !NoNitroRuntime
			// Setup the compiler:
			NitroCode.Setup();
			#endif
		}
		
		if(nitroAot){
			return;
		}
		
		GUINode=GameObject.Find("#PowerUI");
		
		if(GUINode==null){
			// Not started yet.
			
			// Create the UI game object:
			GUINode=new GameObject();
			GUINode.name="#PowerUI";
			
			// Create the camera:
			CameraNode=new GameObject();
			CameraNode.name="Camera";
			
			// Create the updater:
			GlobalUpdater=GUINode.AddComponent<StandardUpdater>();
			
			// Setup the camera:
			GUICamera=CameraNode.AddComponent<Camera>();
		}else{
			// Already started, but we might have updated.
			
			if(CameraNode==null){
				// This can happen if the PowerUI assembly is actively reloaded (e.g. runtime updates).
				CameraNode=GameObject.Find("#PowerUI/Camera");
				CameraTransform=CameraNode.transform;
				GUICamera=CameraNode.GetComponent<Camera>();
			}else{
				// Already started!
				return;
			}
			
		}
		
		// Hide the PowerUI layer from all cameras other than GUICamera: 
		Camera[] cameras=Camera.allCameras;
		
		int layerMask=~(1<<UI.Layer);
		
		for(int i=0;i<cameras.Length;i++){
			// Grab the camera:
			Camera camera=cameras[i];
			
			// Is it the GUICamera?
			if(camera==GUICamera){
				continue;
			}
			
			// Hide the UI layer from it:
			camera.cullingMask&=layerMask;
		}
		
		// Setup the transform:
		CameraTransform=CameraNode.transform;
		CameraTransform.parent=GUINode.transform;
		
		GUICamera.nearClipPlane=0.2f;
		GUICamera.depth=CameraDepth;
		GUICamera.clearFlags=CameraClearFlags.Depth;
		GUICamera.cullingMask=(1<<UI.Layer);
		GUICamera.renderingPath=RenderingPath.Forward;
		
		SetCameraDistance(60f);
		SetFieldOfView(60f);
		
		Renderer=new Renderman();
		
		// Render Mesh.OutputGameObject with the GUI camera:
		Renderer.RenderWithCamera(UI.Layer);
		document=Renderer.RootDocument;
		document.window.top=document.window;
		
		// Some overriding default UI settings:
		document.html.Style.Computed.ChangeTagProperty("color",new PowerUI.Css.Value("#ffffff",PowerUI.Css.ValueType.Color));
		document.html.Style.Computed.ChangeTagProperty("font-size",new PowerUI.Css.Value("14px",PowerUI.Css.ValueType.Pixels));
		document.body.Style.Computed.ChangeTagProperty("overflow",new PowerUI.Css.Value("hidden hidden",PowerUI.Css.ValueType.Point));
		
		UpdateTextDirection();
		
		// Fire the camera event:
		CameraGotCreated(GUICamera);
		
	}