/// <summary>Gets the file protocol for this location. Default is resources://.</summary> public FileProtocol GetProtocol() { return(FileProtocols.Get(Protocol)); }
/// <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); }