Detailed Description

A world UI is one which can be placed in a particular spot in the game world and seen with the game camera. For example, an in-game computer screen/ billboard etc. It has a pixel height and width, a document (which works just like UI.document does) and can have its resolution and origin changed. The resolution defines how many pixels make up one world unit and the origin defines where the gameobjects origin is relative to the UI. By default, it's in the middle.

Inheritance diagram for PowerUI.WorldUI:
PowerUI.FlatWorldUI

Public Member Functions

 WorldUI ()
 Creates a new World UI with 100x100 pixels of space and a name of "new World UI". The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution. More...
 
 WorldUI (string name)
 Creates a new World UI with 100x100 pixels of space and the given name. The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution. More...
 
 WorldUI (int widthPX, int heightPX)
 Creates a new World UI with the given pixels of space and a name of "new World UI". The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution. More...
 
 WorldUI (string name, int widthPX, int heightPX)
 Creates a new World UI with the given pixels of space and a given name. The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution. More...
 
virtual void ResolvePoint (RaycastHit hit, out float x, out float y)
 Resolves a hit to a point on this WorldUI. Note that x and y are 'relative' in the -0.5 to +0.5 range. More...
 
void CameraChanged ()
 Call this if you change the field of view of the camera looking at a pixel perfect WorldUI. More...
 
void UpdateResolution ()
 Flushes resolution changes. Use this after a set resolution method if you want to see your changes on the next update. Note that this is not needed when you've just created your WorldUI or if you're also changing any innerHTML or styles at the same time. Internally this just generates a layout request. More...
 
virtual void RenderWithCamera (int id)
 Puts all batches of this renderer into the given unity layer. More...
 
void SetDepthResolution (float gaps)
 Sets how many world units are used between elements at different depths. Default is 0.01. You'll generally want this to be as small as possible to make the UI appear flat. Too small though and you'll get z-fighting. You can also use large values if you want to achieve a unique effect. More...
 
void SetResolution (int ppw)
 Sets how many Pixels Per World unit this renderer uses. Maps directly to applying a scale. Default is 100. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution). More...
 
virtual void SetResolution (float ppw)
 Sets how many Pixels Per World unit this renderer uses. Maps directly to applying a scale. Default is 100. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution). More...
 
virtual void SetResolution (int ppwW, int ppwH)
 Sets how many Pixels Per World unit this renderer uses, allowing for distortion. Maps directly to applying a scale. Default is 100 on each axis. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution). More...
 
virtual bool SetDimensions (int widthPX, int heightPX)
 Sets how many pixels of space this renderer has. The actual world space size is dictated by this and PowerUI.WorldUI.SetResolution. The amount of pixels and pixels per world unit (resolution). More...
 
virtual void SetOrigin (float x, float y)
 Sets the location of the gameobjects origin relatively. More...
 
void FaceCamera (Camera cameraToFace)
 Makes this UI always face the given camera. More...
 
void FaceCamera ()
 Makes this UI face the main camera until told to stop. Note that this only needs to be called once. More...
 
void StopFacingCamera ()
 Stops making this UI face a camera. More...
 
void Update ()
 Updates this UI. Called internally by UI.Update. More...
 
void ParentToOrigin (Transform parent)
 Parents this WorldUI to the given gameobject and then moves it to the transforms origin. More...
 
void ParentToOrigin (GameObject parent)
 Parents this WorldUI to the given gameobject and then moves it to the gameobjects origin. More...
 
void GotoLocalOrigin ()
 Moves this world UI so it's at the origin of it's parents transform. More...
 
void Expire ()
 Expires this WorldUI now. More...
 
void CancelExpiry ()
 Cancels a pending expiry. More...
 
void SetExpiry (float expiry)
 Sets an expiry time for this WorldUI. It will be destroyed in this many seconds. More...
 
Vector2 RelativePoint (float x, float y)
 Maps a relative (-0.5 to +0.5) point into the 0-width/height range. Great for use with colliders. More...
 
void Destroy ()
 Destroys this UI. Note that this also occurs if the gameobject is destroyed; Just destroying the gameobject or a parent gameObject is all that is required. More...
 

Static Public Member Functions

static void UpdateAll ()
 Updates all worldUI's. Called internally to update pixel perfect WorldUI's. More...
 
static WorldUI Find (RaycastHit hit)
 Checks if the given hit was on a WorldUI. If it was, it returns the WorldUI that was hit. More...
 
static WorldUI Find (Transform transform)
 Finds a WorldUI instance for the given transform. More...
 
static WorldUI Find (string name)
 Finds a WorldUI by name. Note that this is a linear scan so it's very wise to keep hold of references to your WorldUI's where possible. If multiple WorldUI's have the same name, the latest one created is returned. More...
 

Public Attributes

bool Flat
 True if this UI is rendering flat. More...
 
float Ratio =1f
 The width/height ratio. More...
 
int pixelWidth
 The width of the UI in pixels. More...
 
int pixelHeight
 The height of the UI in pixels. More...
 
HtmlDocument document
 The HTML document for this UI. Use this to edit the content. More...
 
Transform transform
 The world space transform of the UI. Use this to move it around. More...
 
GameObject gameObject
 The game object that this UI is parented to. More...
 
string Name
 The name of this WorldUI. Use WorldUI.Find to obtain a WorldUI by name. More...
 
bool Expires
 Does this WorldUI expire? More...
 
float ExpiresIn
 How long until this worldUI expires. More...
 
WorldUI UIAfter
 For internal use. All WorldUI's are stored as a linked list for updates. This is the next one in the list. More...
 
WorldUI UIBefore
 For internal use. All WorldUI's are stored as a linked list for updates. This is the one before this in the list. More...
 
float PixelHeightF
 The height of the UI in pixels as a float. More...
 
Renderman Renderer
 The renderer that renders this UI. More...
 
Camera CameraToFace
 The camera to look at. Camera.main is used if this is null and AlwaysFaceCamera is true. More...
 
bool AlwaysFaceCamera
 <sumamry>True if this UI should face the main camera. More...
 
WorldUIExpiryEvent OnExpire
 An event called when this WorldUI expires. Returning false prevents the default destroy action. More...
 
Vector2 WorldScreenOrigin =Vector2.zero
 The location of the origin in pixels. Set internally; see PowerUI.WorldUI.SetOrigin. More...
 
Vector2 OriginLocation =new Vector2(0.5f,0.5f)
 The location of the gameobjects origin relatively. Set internally; see PowerUI.WorldUI.SetOrigin. More...
 
int AtlasSize
 

Static Public Attributes

static Dictionary< Transform,
WorldUI
PhysicsLookup
 A lookup used to quickly find a WorldUI from its transform. Used for physics based input resolving. More...
 
static bool LiveUpdatablesAvailable
 True if any of the live WorldUI's are 'updateable'. These are pixel perfect or ones which are facing a camera. More...
 

Properties

int RenderQueue [get, set]
 The render queue that this worldUI is in. More...
 
bool PixelPerfect [get, set]
 True if the resolution of this WorldUI is automatically updated such that the UI is always pixel perfect. More...
 
Css.RenderMode RenderMode [get, set]
 How this WorldUI renders images; either on an atlas or with them 'as is'. Default is Atlas. More...
 
int Layer [get, set]
 The layer to put this worldUI in. More...
 
Transform PhysicsModeCollider [get]
 The collider's transform if WorldUI's are in Screen input mode. This will have a BoxCollider attached. More...
 
Vector2 WorldPerPixel [get]
 The amount of world units per pixel. This is just the transform scale. More...
 
Vector2 WorldScreenSize [get]
 The size of the screen in world units. More...
 
bool AcceptInput [get, set]
 True if this WorldUI accepts input. It's false by default. More...
 

Private Member Functions

void MainScreenSizeChanged (Dom.Event e)
 Called when the game screen changes size. Used by pixel perfect WorldUI's. More...
 
void CameraToFaceChanged ()
 Called when CameraToFace changes by calling a FaceCamera overload. More...
 

Private Attributes

bool IsPixelPerfect
 True if the resolution of this WorldUI is automatically updated such that the UI is always pixel perfect. More...
 
float ScreenSpaceProportion
 Cached percentage of the screen that a pixel perfect WorldUI should take up. More...
 

Constructor & Destructor Documentation

PowerUI.WorldUI.WorldUI ( )
inline

Creates a new World UI with 100x100 pixels of space and a name of "new World UI". The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution.

PowerUI.WorldUI.WorldUI ( string  name)
inline

Creates a new World UI with 100x100 pixels of space and the given name. The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution.

Parameters
nameThe name for the UI's gameobject.
PowerUI.WorldUI.WorldUI ( int  widthPX,
int  heightPX 
)
inline

Creates a new World UI with the given pixels of space and a name of "new World UI". The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution.

Parameters
widthPXThe width in pixels of this UI.
heightPXThe height in pixels of this UI.
PowerUI.WorldUI.WorldUI ( string  name,
int  widthPX,
int  heightPX 
)
inline

Creates a new World UI with the given pixels of space and a given name. The gameobjects origin sits at the middle of the UI by default. See PowerUI.WorldUI.SetOrigin. By default, 100 pixels are 1 world unit. See PowerUI.WorldUI.SetResolution.

Parameters
nameThe name for the UI's gameobject.
widthPXThe width in pixels of this UI.
heightPXThe height in pixels of this UI.

Member Function Documentation

void PowerUI.WorldUI.CameraChanged ( )
inline

Call this if you change the field of view of the camera looking at a pixel perfect WorldUI.

void PowerUI.WorldUI.CameraToFaceChanged ( )
inlineprivate

Called when CameraToFace changes by calling a FaceCamera overload.

void PowerUI.WorldUI.CancelExpiry ( )
inline

Cancels a pending expiry.

void PowerUI.WorldUI.Destroy ( )
inline

Destroys this UI. Note that this also occurs if the gameobject is destroyed; Just destroying the gameobject or a parent gameObject is all that is required.

void PowerUI.WorldUI.Expire ( )
inline

Expires this WorldUI now.

void PowerUI.WorldUI.FaceCamera ( Camera  cameraToFace)
inline

Makes this UI always face the given camera.

Parameters
cameraToFaceThe camera to face.
void PowerUI.WorldUI.FaceCamera ( )
inline

Makes this UI face the main camera until told to stop. Note that this only needs to be called once.

static WorldUI PowerUI.WorldUI.Find ( RaycastHit  hit)
inlinestatic

Checks if the given hit was on a WorldUI. If it was, it returns the WorldUI that was hit.

static WorldUI PowerUI.WorldUI.Find ( Transform  transform)
inlinestatic

Finds a WorldUI instance for the given transform.

static WorldUI PowerUI.WorldUI.Find ( string  name)
inlinestatic

Finds a WorldUI by name. Note that this is a linear scan so it's very wise to keep hold of references to your WorldUI's where possible. If multiple WorldUI's have the same name, the latest one created is returned.

Parameters
nameThe WorldUI's name.
Returns
The latest WorldUI with this name, or null if not found.
void PowerUI.WorldUI.GotoLocalOrigin ( )
inline

Moves this world UI so it's at the origin of it's parents transform.

void PowerUI.WorldUI.MainScreenSizeChanged ( Dom.Event  e)
inlineprivate

Called when the game screen changes size. Used by pixel perfect WorldUI's.

void PowerUI.WorldUI.ParentToOrigin ( Transform  parent)
inline

Parents this WorldUI to the given gameobject and then moves it to the transforms origin.

Parameters
parentThe transform to parent to.
void PowerUI.WorldUI.ParentToOrigin ( GameObject  parent)
inline

Parents this WorldUI to the given gameobject and then moves it to the gameobjects origin.

Parameters
parentThe gameobject to parent to.
Vector2 PowerUI.WorldUI.RelativePoint ( float  x,
float  y 
)
inline

Maps a relative (-0.5 to +0.5) point into the 0-width/height range. Great for use with colliders.

virtual void PowerUI.WorldUI.RenderWithCamera ( int  id)
inlinevirtual

Puts all batches of this renderer into the given unity layer.

Parameters
idThe ID of the unity layer.

Reimplemented in PowerUI.FlatWorldUI.

virtual void PowerUI.WorldUI.ResolvePoint ( RaycastHit  hit,
out float  x,
out float  y 
)
inlinevirtual

Resolves a hit to a point on this WorldUI. Note that x and y are 'relative' in the -0.5 to +0.5 range.

Reimplemented in PowerUI.FlatWorldUI.

void PowerUI.WorldUI.SetDepthResolution ( float  gaps)
inline

Sets how many world units are used between elements at different depths. Default is 0.01. You'll generally want this to be as small as possible to make the UI appear flat. Too small though and you'll get z-fighting. You can also use large values if you want to achieve a unique effect.

Parameters
gapsThe distance between elements to use.
virtual bool PowerUI.WorldUI.SetDimensions ( int  widthPX,
int  heightPX 
)
inlinevirtual

Sets how many pixels of space this renderer has. The actual world space size is dictated by this and PowerUI.WorldUI.SetResolution. The amount of pixels and pixels per world unit (resolution).

Parameters
widthPXThe width in pixels.
heightPXThe height in pixels.

Reimplemented in PowerUI.FlatWorldUI.

void PowerUI.WorldUI.SetExpiry ( float  expiry)
inline

Sets an expiry time for this WorldUI. It will be destroyed in this many seconds.

virtual void PowerUI.WorldUI.SetOrigin ( float  x,
float  y 
)
inlinevirtual

Sets the location of the gameobjects origin relatively.

Parameters
xThe x coordinate of the origin as a value from 0->1. Zero is the left edge. Default 0.5.
yThe y coordinate of the origin as a value from 0->1. Zero is the bottom edge. Default is 0.5.

Reimplemented in PowerUI.FlatWorldUI.

void PowerUI.WorldUI.SetResolution ( int  ppw)
inline

Sets how many Pixels Per World unit this renderer uses. Maps directly to applying a scale. Default is 100. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution).

Parameters
ppwPixels per world unit to use for both x and y.
virtual void PowerUI.WorldUI.SetResolution ( float  ppw)
inlinevirtual

Sets how many Pixels Per World unit this renderer uses. Maps directly to applying a scale. Default is 100. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution).

Parameters
ppwPixels per world unit to use for both x and y.

Reimplemented in PowerUI.FlatWorldUI.

virtual void PowerUI.WorldUI.SetResolution ( int  ppwW,
int  ppwH 
)
inlinevirtual

Sets how many Pixels Per World unit this renderer uses, allowing for distortion. Maps directly to applying a scale. Default is 100 on each axis. The actual world space size is dictated by this and PowerUI.WorldUI.SetDimensions. The amount of pixels and pixels per world unit (resolution).

Parameters
ppwWPixels per world unit to use for the x axis.
ppwHPixels per world unit to use for the y axis.

Reimplemented in PowerUI.FlatWorldUI.

void PowerUI.WorldUI.StopFacingCamera ( )
inline

Stops making this UI face a camera.

void PowerUI.WorldUI.Update ( )
inline

Updates this UI. Called internally by UI.Update.

static void PowerUI.WorldUI.UpdateAll ( )
inlinestatic

Updates all worldUI's. Called internally to update pixel perfect WorldUI's.

void PowerUI.WorldUI.UpdateResolution ( )
inline

Flushes resolution changes. Use this after a set resolution method if you want to see your changes on the next update. Note that this is not needed when you've just created your WorldUI or if you're also changing any innerHTML or styles at the same time. Internally this just generates a layout request.

Member Data Documentation

bool PowerUI.WorldUI.AlwaysFaceCamera

<sumamry>True if this UI should face the main camera.

int PowerUI.WorldUI.AtlasSize
Camera PowerUI.WorldUI.CameraToFace

The camera to look at. Camera.main is used if this is null and AlwaysFaceCamera is true.

HtmlDocument PowerUI.WorldUI.document

The HTML document for this UI. Use this to edit the content.

bool PowerUI.WorldUI.Expires

Does this WorldUI expire?

float PowerUI.WorldUI.ExpiresIn

How long until this worldUI expires.

bool PowerUI.WorldUI.Flat

True if this UI is rendering flat.

GameObject PowerUI.WorldUI.gameObject

The game object that this UI is parented to.

bool PowerUI.WorldUI.IsPixelPerfect
private

True if the resolution of this WorldUI is automatically updated such that the UI is always pixel perfect.

bool PowerUI.WorldUI.LiveUpdatablesAvailable
static

True if any of the live WorldUI's are 'updateable'. These are pixel perfect or ones which are facing a camera.

string PowerUI.WorldUI.Name

The name of this WorldUI. Use WorldUI.Find to obtain a WorldUI by name.

WorldUIExpiryEvent PowerUI.WorldUI.OnExpire

An event called when this WorldUI expires. Returning false prevents the default destroy action.

Vector2 PowerUI.WorldUI.OriginLocation =new Vector2(0.5f,0.5f)

The location of the gameobjects origin relatively. Set internally; see PowerUI.WorldUI.SetOrigin.

Dictionary<Transform,WorldUI> PowerUI.WorldUI.PhysicsLookup
static

A lookup used to quickly find a WorldUI from its transform. Used for physics based input resolving.

int PowerUI.WorldUI.pixelHeight

The height of the UI in pixels.

float PowerUI.WorldUI.PixelHeightF

The height of the UI in pixels as a float.

int PowerUI.WorldUI.pixelWidth

The width of the UI in pixels.

float PowerUI.WorldUI.Ratio =1f

The width/height ratio.

Renderman PowerUI.WorldUI.Renderer

The renderer that renders this UI.

float PowerUI.WorldUI.ScreenSpaceProportion
private

Cached percentage of the screen that a pixel perfect WorldUI should take up.

Transform PowerUI.WorldUI.transform

The world space transform of the UI. Use this to move it around.

WorldUI PowerUI.WorldUI.UIAfter

For internal use. All WorldUI's are stored as a linked list for updates. This is the next one in the list.

WorldUI PowerUI.WorldUI.UIBefore

For internal use. All WorldUI's are stored as a linked list for updates. This is the one before this in the list.

Vector2 PowerUI.WorldUI.WorldScreenOrigin =Vector2.zero

The location of the origin in pixels. Set internally; see PowerUI.WorldUI.SetOrigin.

Property Documentation

bool PowerUI.WorldUI.AcceptInput
getset

True if this WorldUI accepts input. It's false by default.

int PowerUI.WorldUI.Layer
getset

The layer to put this worldUI in.

Transform PowerUI.WorldUI.PhysicsModeCollider
get

The collider's transform if WorldUI's are in Screen input mode. This will have a BoxCollider attached.

bool PowerUI.WorldUI.PixelPerfect
getset

True if the resolution of this WorldUI is automatically updated such that the UI is always pixel perfect.

Css.RenderMode PowerUI.WorldUI.RenderMode
getset

How this WorldUI renders images; either on an atlas or with them 'as is'. Default is Atlas.

int PowerUI.WorldUI.RenderQueue
getset

The render queue that this worldUI is in.

Vector2 PowerUI.WorldUI.WorldPerPixel
get

The amount of world units per pixel. This is just the transform scale.

Vector2 PowerUI.WorldUI.WorldScreenSize
get

The size of the screen in world units.