Libraries.Game.Layer3D Documentation

The Layer3D class is used to manage a number of 3D objects, as well as manage input. The Layer2D effectively consists of a 3D "world", where all objects added to it exist in the same space and can interact with each other.

Example Code

use Libraries.Game.Game
use Libraries.Game.Layer3D
use Libraries.Game.Graphics.Model
use Libraries.Game.Graphics.Color

class Main is Game

    action Main
        StartGame()
    end

    action CreateGame
        Color color

        Model box
        box:LoadBox(2, 2, 2, color:Maroon())
        box:SetPosition(-2, 0, 2)

        Model sphere
        sphere:LoadSphere(2, 2, 2, color:Teal())
        sphere:SetPosition(2, 0, 2)

        Layer3D layer
        layer:Add(box)
        layer:Add(sphere)
        AddLayer(layer)
    end

    action Update(number seconds)
    end
end

Inherits from: Libraries.Language.Object, Libraries.Game.Layer

Summary

Actions Summary Table

ActionsDescription
Add(Libraries.Game.Graphics.PointLight light)This action will add a PointLight to the Layer3D.
Add(Libraries.Game.Graphics.DirectionalLight light)This action will add the given light to the Layer3D.
Add(Libraries.Interface.Item3D item)This action will add an Item3D to this Layer.
Add(integer index, Libraries.Interface.Item3D item)This action will add an Item3D to this Layer's array of items at the index location.
AddCollisionListener(Libraries.Interface.Events.CollisionListener3D listener)AddCollisionListener will add a collision listener to this layer.
AddJoint(Libraries.Game.Physics.Joints.Joint3D joint)
AddMouseListener(Libraries.Interface.Events.MouseListener listener)This action will add a MouseListener to the layer.
AddMouseMovementListener(Libraries.Interface.Events.MouseMovementListener listener)This action will add a MouseMovementListener to the layer.
AddMouseWheelListener(Libraries.Interface.Events.MouseWheelListener listener)This action will add a MouseWheelListener to the layer.
AddToFront(Libraries.Interface.Item3D item)This action will add an Item3D to this layer's array of items at index 0.
AddTouchListener(Libraries.Interface.Events.TouchListener listener)This action will add a TouchListener to the layer.
ApplyGravity()
AutomaticallyClearForces()
ClearForces()
Compare(Libraries.Language.Object object)This action compares two object hash codes and returns a CompareResult.
DisableItemLighting(Libraries.Interface.Item3D item)This action will disable lighting for the given Item3D (if it is a light) and any of its children (if they are lights).
Draw()This action will draw all items in this Layer on the screen (if they can be drawn and they aren't hidden).
Empty()This action will clear all the items in this layer.
EnableItemLighting(Libraries.Interface.Item3D item)This action will enable lighting for the given Item3D (if it is a light) and any of its children (if they are lights).
EnablePhysics(boolean flag)TO-DO: This array of all items is regenerated for each mouse event processed.
Equals(Libraries.Language.Object object)This action determines if two objects are equal based on their hash code values.
Get(integer index)This action will get an Item3D stored in the layer at the given index in the layer's internal array of items.
GetAmbientLight()This action will return the AmbientLight being used on this Layer3D.
GetAutomaticResizing()This action returns whether or not the Layer will automatically respond to ResizeEvents.
GetCamera()This action will return the camera being used by this Layer.
GetCollisionList()This action gets the list of items on this layer that are colliding and returns it as an array.
GetCollisionManager()This action gets the collision manager for this object which is responsible for managing the collisions between all colliding items on this layer.
GetDirectionalLight(integer index)This action will return a directional light stored at the given index in the Layer's array of directional lights.
GetDirectionalLights()This action will get an iterator containing all of the DirectionalLights stored inside this layer.
GetFromEnd()This action will return the item stored at the end of the layer's array of items.
GetFromFront()This action will return the Item3D at the front of the layer's array of items.
GetGravity()
GetHashCode()This action gets the hash code for an object.
GetIterator()This action will return an iterator of all the Item3D's stored inside this layer's array of items.
GetPointLight(integer index)This action will return a point light stored at the given index in the Layer's array of point lights.
GetPointLights()This action will get an iterator containing all of the PointLights stored inside this layer.
GetSize()This action will return the number of items that have been added to this layer.
GetSkybox()This action sets the Skybox that should be used by this Layer3D.
Hide()This action will hide the Layer.
IntegrateTransforms(number timeStep)
IsContinuousPhysics()
IsEmpty()This action will return false if there are items stored in this layer's array of items, or true if there are none.
IsShowing()This action will return if the current layer is currently visible or not.
IsSimulationRequired()
IsSubStepping()
IsWarmStarting()
PhysicsEnabled()TO-DO: This array of all items is regenerated for each mouse event processed.
ProcessMouseEvent(Libraries.Interface.Events.MouseEvent event)This action will notify mouse listeners that are a part of this layer of the given mouse event.
ProcessTouchEvent(Libraries.Interface.Events.TouchEvent event)This action will notify touch listeners that are a part of this layer of the given touch event.
Remove(Libraries.Interface.Item3D item)This action will remove an Item3D from this layer.
Remove(Libraries.Game.Graphics.PointLight light)This action will remove the given PointLight from the Layer3D.
Remove(Libraries.Game.Graphics.DirectionalLight light)This action will remove the given DirectionalLight from the Layer3D.
RemoveAmbientLight()This action will remove all ambient lighting from the Layer.
RemoveAt(integer index)This action will remove an Item3D at the index location from this layer's array of items, and return the item that was removed.
RemoveCollisionListener(Libraries.Interface.Events.CollisionListener3D listener)RemoveCollisionListener removes a collision listener to this layer.
RemoveFromEnd()This action will remove an Item3D from the end of the array of items in this layer, and return the item that was removed.
RemoveFromFront()This action will remove an Item3D from the front of the array of items in this layer, and return the item that was removed.
RemoveJoint(Libraries.Game.Physics.Joints.Joint3D joint)
RemoveMouseListener(Libraries.Interface.Events.MouseListener listener)This action will remove a MouseListener from the layer.
RemoveMouseMovementListener(Libraries.Interface.Events.MouseMovementListener listener)This action will remove a MouseMovementListener from the layer.
RemoveMouseWheelListener(Libraries.Interface.Events.MouseWheelListener listener)This action will remove a MouseWheelListener from the layer.
RemoveTouchListener(Libraries.Interface.Events.TouchListener listener)This action will remove a TouchListener from the layer.
RequireSimulation(boolean flag)
Resize(Libraries.Interface.Events.ResizeEvent event)
SaveKinematicState(number timeStep)
Set(integer index, Libraries.Interface.Item3D item)This action will set the value of the given index in the layer's array of items to be the given Item3D.
SetAmbientLight(Libraries.Game.Graphics.AmbientLight light)This action will set the ambient lighting present in this Layer.
SetAutomaticResizing(boolean resizing)This action sets if the Layer should automatically respond to ResizeEvents.
SetAutomaticallyClearForces(boolean flag)
SetCamera(Libraries.Game.Graphics.Camera cam)This action will set the camera being used by this Layer.
SetContinuousPhysics(boolean flag)
SetGravity(Libraries.Compute.Vector3 gravity)
SetGravity(number x, number y, number z)Before overwriting the old data in the array, we want to make sure that any lights in the item's hierarchy are removed from the environment.
SetNewItemAdded(boolean flag)This action indicates that the layer has received a new item that it must manage during collision detection.
SetScreenPositionsFromPhysicsPositions()
SetSkybox(Libraries.Game.Graphics.Skybox box)This action sets the Skybox that should be used by this Layer3D.
SetSubStepping(boolean flag)
SetWarmStarting(boolean flag)
Show()This action will show the Layer.
SolvePhysics(number seconds)
StepPhysics(number seconds)
SynchronizeTransforms()
TestForCollisions(number seconds)This action triggers collision detection for this layer during a frame in the Game engine.
Update(number seconds)This action will update all of the items contained within this Layer.

Actions Documentation

Add(Libraries.Game.Graphics.PointLight light)

This action will add a PointLight to the Layer3D. The Layer3D will treat it as an Item3D (respecting its position and updating it each frame) as well as using it to light up the scene.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.PointLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            PointLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetPosition(6, 3, 0)
            light:SetIntensity(8)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

Add(Libraries.Game.Graphics.DirectionalLight light)

This action will add the given light to the Layer3D. It will be used during lighting of all objects on the layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

Add(Libraries.Interface.Item3D item)

This action will add an Item3D to this Layer. It will be updated along with the rest of the layer, and will be drawn on the screen (if it is visible and possible to draw the given Item3D). The Item3D will be added to the back of the layer's internal array of items.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            // Item3D objects aren't visible, but can still be used for game logic.
            Item3D area
            area:SetWidth(5)
            area:SetHeight(5)
            area:SetDepth(5)
            area:SetPosition(0, 10, 0)

            // Models inherit from Item3D, so they can be added too.
            Model cylinder
            Color color
            cylinder:LoadCylinder(2, 4, 2, color:Orange())
            cylinder:SetPosition(0, 0, 3)

            Layer3D layer
            layer:Add(area)
            layer:Add(cylinder)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

Add(integer index, Libraries.Interface.Item3D item)

This action will add an Item3D to this Layer's array of items at the index location. It will be updated along with the rest of the layer, and will be drawn on the screen (if it is visible and possible to draw the given Item3D).

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            // Item3D objects aren't visible, but can still be used for game logic.
            Item3D area
            area:SetDimensions(5, 5, 5)
            area:SetPosition(0, 10, 10)

            // Models inherit from Item2D, so they can be added too.
            Model box
            Color color
            box:LoadBox(3, 3, 3, color:Green())
            box:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(0, area)
            layer:Add(1, box)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

AddCollisionListener(Libraries.Interface.Events.CollisionListener3D listener)

AddCollisionListener will add a collision listener to this layer. The collision listener will be notified of collisions occuring on this layer, and is responsible for managing the collision events.

Parameters

AddJoint(Libraries.Game.Physics.Joints.Joint3D joint)

Parameters

AddMouseListener(Libraries.Interface.Events.MouseListener listener)

This action will add a MouseListener to the layer. When the layer receives a mouse event, it will first try to find the topmost item which can handle the event. If the event is not handled, then all MouseListeners in the layer will receive the event.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseListener.
        MouseListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseListener(myListener)
            AddLayer(layer)
        end

        action Update(number seconds)
        end

    end

Parameters

AddMouseMovementListener(Libraries.Interface.Events.MouseMovementListener listener)

This action will add a MouseMovementListener to the layer. When the layer receives a mouse event, it will first try to find the topmost item which can handle the event. If the event is not handled, then all MouseMovementListeners in the layer will receive the event.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseMovementListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseMovementListener.
        MouseMovementListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseMovementListener(myListener)
            AddLayer(layer)
        end

        action Update(number seconds)
        end

    end

Parameters

AddMouseWheelListener(Libraries.Interface.Events.MouseWheelListener listener)

This action will add a MouseWheelListener to the layer. When the layer receives a mouse event, it will first try to find the topmost item which can handle the event. If the event is not handled, then all MouseWheelListeners in the layer will receive the event.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseWheelListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseWheelListener.
        MouseWheelListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseWheelListener(myListener)
            AddLayer(layer)
        end

        action Update(number seconds)
        end

    end

Parameters

AddToFront(Libraries.Interface.Item3D item)

This action will add an Item3D to this layer's array of items at index 0. It will be updated along with the rest of the layer, and will be drawn on the screen (if it is visible and possible to draw the given Item3D). Adding an item to the front will cause it to be drawn and updated before other items in the layer, and other drawn items will appear to be on top of it.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            // Item3D objects aren't visible, but can still be used for game logic.
            Item3D area
            area:SetDimensions(5, 5, 5)
            area:SetPosition(0, 0, 5)

            // Models inherit from Item3D, so they can be added too.
            Model cylinder
            Color color
            cylinder:LoadCylinder(3, 3, 3, color:Teal())
            cylinder:SetPosition(1, 0, 1)

            Layer3D layer
            layer:AddToFront(area)
            layer:AddToFront(cylinder)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

AddTouchListener(Libraries.Interface.Events.TouchListener listener)

This action will add a TouchListener to the layer. When the layer receives a touch event, it will first try to find the topmost item which can handle the event. If the event is not handled, then all TouchListeners in the layer will receive the event.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.TouchListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from TouchListener.
        TouchListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddTouchListener(myListener)
            AddLayer(layer)
        end

        action Update(number seconds)
        end

    end

Parameters

ApplyGravity()

AutomaticallyClearForces()

Return

boolean

ClearForces()

Compare(Libraries.Language.Object object)

This action compares two object hash codes and returns a CompareResult. The compare result is either larger if this hash code is larger than the object passed as a parameter, smaller, or equal.

Example Code

use Libraries.Language.Support.CompareResult
        Object o
        Object t
        CompareResult result = o:Compare(t)

Parameters

Return

Libraries.Language.Support.CompareResult: The Compare result, Smaller, Equal, or Larger.

DisableItemLighting(Libraries.Interface.Item3D item)

This action will disable lighting for the given Item3D (if it is a light) and any of its children (if they are lights). This action is called automatically by the Layer when adding or removing items. Most users will never need to use this action directly.

Parameters

Draw()

This action will draw all items in this Layer on the screen (if they can be drawn and they aren't hidden). If the Layer is currently hidden, then this action will do nothing. This is automatically called by the Game class as needed. Most users will never need to use this action directly.

Empty()

This action will clear all the items in this layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color

            Model box
            box:LoadBox(2, 2, 2, color:Red())
            box:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(box)
            AddLayer(layer)

            layer:Empty()
        end

        action Update(number seconds)
        end
    end

EnableItemLighting(Libraries.Interface.Item3D item)

This action will enable lighting for the given Item3D (if it is a light) and any of its children (if they are lights). This action is called automatically by the Layer when adding or removing items. Most users will never need to use this action directly.

Parameters

EnablePhysics(boolean flag)

TO-DO: This array of all items is regenerated for each mouse event processed. It would be more efficient to maintain this array independently of this action.

Parameters

Equals(Libraries.Language.Object object)

This action determines if two objects are equal based on their hash code values.

Example Code

use Libraries.Language.Object
        use Libraries.Language.Types.Text
        Object o
        Text t
        boolean result = o:Equals(t)

Parameters

Return

boolean: True if the hash codes are equal and false if they are not equal.

Get(integer index)

This action will get an Item3D stored in the layer at the given index in the layer's internal array of items.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model sphere
            sphere:LoadSphere(3, 3, 3, color:White())
            sphere:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(sphere)
            AddLayer(layer)

            Item3D item = layer:Get(0)
        end

        action Update(number seconds)
        end
    end

Parameters

Return

Libraries.Interface.Item3D: The Item3D stored at the index in the array.

GetAmbientLight()

This action will return the AmbientLight being used on this Layer3D. If the scene doesn't have any ambient lighting, then this action will return undefined.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            AmbientLight returnedLight = layer:GetAmbientLight()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Game.Graphics.AmbientLight: The AmbientLight used in the Layer.

GetAutomaticResizing()

This action returns whether or not the Layer will automatically respond to ResizeEvents. If this value is true, then the Layer will automatically adjust the camera and resize Items on the Layer when a ResizeEvent occurs.

Return

boolean:

GetCamera()

This action will return the camera being used by this Layer. The camera is used to determine what will be drawn on the screen. Objects will be drawn on the screen as they are seen by the Layer's set camera.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Camera

    class Main is Game

        Camera layerCamera = undefined

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layerCamera = layer:GetCamera()
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Game.Graphics.Camera: The camera currently being used by this layer.

GetCollisionList()

This action gets the list of items on this layer that are colliding and returns it as an array.

Return

Libraries.Interface.Events.CollisionEvent3D:

GetCollisionManager()

This action gets the collision manager for this object which is responsible for managing the collisions between all colliding items on this layer.

Return

Libraries.Game.Collision.CollisionManager3D:

GetDirectionalLight(integer index)

This action will return a directional light stored at the given index in the Layer's array of directional lights. Each type of light stored in the Layer is kept in a separate array from other types. If there are no directional lights added to this layer, or if the index is out of bounds, this action will produce an error.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light1
            light1:SetColor(0.8, 0.8, 0.8, 1)
            light1:SetDirection(1, 0, 1.1)

            DirectionalLight light2
            light2:SetColor(0.8, 0.8, 0.8, 1)
            light2:SetDirection(0, -1, 0)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light1)
            layer:Add(light2)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            // This will retrieve light1, because it was added to the Layer first.
            DirectionalLight returnedLight = layer:GetDirectionalLight(0)
        end

        action Update(number seconds)
        end
    end

Parameters

Return

Libraries.Game.Graphics.DirectionalLight: The DirectionalLight stored at the given index in this Layer.

GetDirectionalLights()

This action will get an iterator containing all of the DirectionalLights stored inside this layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight
    use Libraries.Containers.Iterator

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            Iterator<DirectionalLight> lights = layer:GetDirectionalLights()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Containers.Iterator: An iterator containing each of the DirectionalLights added to this Layer.

GetFromEnd()

This action will return the item stored at the end of the layer's array of items.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model sphere
            sphere:LoadSphere(2, 2, 2, color:Green())
            sphere:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(sphere)
            AddLayer(layer)

            Item3D item = layer:GetFromEnd()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Interface.Item3D: The last item in the layer's array of items.

GetFromFront()

This action will return the Item3D at the front of the layer's array of items. This is functionally the same as calling "Get(0)".

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model cube
            cube:LoadBox(2, 2, 2, color:Yellow())
            cube:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(cube)
            AddLayer(layer)

            Item3D item = layer:GetFromFront()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Interface.Item3D: The first item in the layer's array of items.

GetGravity()

Return

Libraries.Compute.Vector3

GetHashCode()

This action gets the hash code for an object.

Example Code

Object o
        integer hash = o:GetHashCode()

Return

integer: The integer hash code of the object.

GetIterator()

This action will return an iterator of all the Item3D's stored inside this layer's array of items.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Containers.Iterator

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Item3D item1
            Item3D item2
            Item3D item3

            Layer3D layer
            layer:Add(item1)
            layer:Add(item2)
            layer:Add(item3)
            AddLayer(layer)

            Iterator<Item3D> itemIterator = layer:GetIterator()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Containers.Iterator: An iterator containing all Item3D's stored in this layer.

GetPointLight(integer index)

This action will return a point light stored at the given index in the Layer's array of point lights. Each type of light stored in the Layer is kept in a separate array from other types. If there are no directional lights added to this layer, or if the index is out of bounds, this action will produce an error.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.PointLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            PointLight light1
            light1:SetColor(0.8, 0.8, 0.8, 1)
            light1:SetPosition(6, 3, 0)
            light1:SetIntensity(8)

            PointLight light2
            light2:SetColor(0.8, 0.8, 0.8, 1)
            light2:SetPosition(2, 3, 0)
            light2:SetIntensity(8)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light1)
            layer:Add(light2)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            // This will retrieve light1, because it was added to the Layer first.
            PointLight returnedLight = layer:GetPointLight(0)
        end

        action Update(number seconds)
        end
    end

Parameters

Return

Libraries.Game.Graphics.PointLight: The PointLight stored at the given index in this Layer.

GetPointLights()

This action will get an iterator containing all of the PointLights stored inside this layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.PointLight
    use Libraries.Game.Graphics.AmbientLight
    use Libraries.Containers.Iterator

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            PointLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetPosition(6, 3, 0)
            light:SetIntensity(8)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            Iterator<PointLight> lights = layer:GetPointLights()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Containers.Iterator: An Iterator containing each of the PointLights that have been added to this Layer.

GetSize()

This action will return the number of items that have been added to this layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Item3D item1
            Item3D item2
            Item3D item3

            Layer3D layer
            layer:Add(item1)
            layer:Add(item2)
            layer:Add(item3)
            AddLayer(layer)

            integer size = layer:GetSize()
            output "There are " + size + " items stored in the layer."
        end

        action Update(number seconds)
        end
    end

Return

integer: The number of items stored in this layer's array of items.

GetSkybox()

This action sets the Skybox that should be used by this Layer3D. The given Skybox will be rendered behind all other items in the layer. If the given parameter is undefined, the Layer will not render a skybox. By default, the skybox is undefined.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Skybox

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            // Assuming we have 6 image files, "Sky-Right.png", "Sky-Left.png", etc.
            Skybox skybox
            skybox:Load("Sky-Right.png", "Sky-Left.png", "Sky-Up.png", "Sky-Down.png", "Sky-Forward.png", "Sky-Back.png")

            Layer3D layer = GetCurrentLayer3D()
            layer:SetSkybox(skybox)

            Skybox layerBox = layer:GetSkybox()
        end
    end

Return

Libraries.Game.Graphics.Skybox:

Hide()

This action will hide the Layer. This will prevent the Layer from appearing when asked to draw.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer2D
    use Libraries.Game.Graphics.Drawable

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Drawable square
            square:LoadFilledRectangle(200, 200)
            
            Layer2D layer
            layer:Add(square)

            AddLayer(layer)
            layer:Hide()
        end

        action Update(number seconds)
        end
    end

IntegrateTransforms(number timeStep)

Parameters

IsContinuousPhysics()

Return

boolean

IsEmpty()

This action will return false if there are items stored in this layer's array of items, or true if there are none.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Item3D item1
            Item3D item2
            Item3D item3

            Layer3D layer
            boolean empty = layer:IsEmpty()
            output "IsEmpty() returned " + empty

            layer:Add(item1)
            layer:Add(item2)
            layer:Add(item3)

            empty = layer:IsEmpty()
            output "After adding items, IsEmpty() returns " + empty

            AddLayer(layer)            
        end

        action Update(number seconds)
        end
    end

Return

boolean: Whether or not any items are stored in this layer.

IsShowing()

This action will return if the current layer is currently visible or not. Layers which are showing will be drawn on the screen automatically by the Game class. Layers begin showing by default.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer2D
    use Libraries.Game.Graphics.Drawable

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Drawable square
            square:LoadFilledRectangle(200, 200)
            
            Layer2D layer
            layer:Add(square)

            AddLayer(layer)

            boolean showing = layer:IsShowing()
            output "layer:IsShowing() returned " + showing

            layer:Hide()

            showing = layer:IsShowing()
            output "After calling Hide(), IsShowing() returned " + showing
        end

        action Update(number seconds)
        end
    end

Return

boolean:

IsSimulationRequired()

Return

boolean

IsSubStepping()

Return

boolean

IsWarmStarting()

Return

boolean

PhysicsEnabled()

TO-DO: This array of all items is regenerated for each mouse event processed. It would be more efficient to maintain this array independently of this action.

Return

boolean:

ProcessMouseEvent(Libraries.Interface.Events.MouseEvent event)

This action will notify mouse listeners that are a part of this layer of the given mouse event. This is called automatically by the Game engine as needed. Most users will never need to use this action directly.

Parameters

Return

Libraries.Interface.Item: The Item which intercepted the event, or undefined if no Item received the event.

ProcessTouchEvent(Libraries.Interface.Events.TouchEvent event)

This action will notify touch listeners that are a part of this layer of the given touch event. This is called automatically by the Game engine as needed. Most users will never need to use this action directly.

Parameters

Return

Libraries.Interface.Item:

Remove(Libraries.Interface.Item3D item)

This action will remove an Item3D from this layer. If the item was not a part of this layer, this action will have no effect.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Orange())
            box:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(box)
            AddLayer(layer)

            layer:Remove(box)
        end

        action Update(number seconds)
        end
    end

Parameters

Remove(Libraries.Game.Graphics.PointLight light)

This action will remove the given PointLight from the Layer3D. It will no longer be part of the item hierarchy of this Layer, and will no longer provide lighting in the scene.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.PointLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            PointLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetPosition(6, 3, 0)
            light:SetIntensity(8)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            layer:Remove(light)
        end

        action Update(number seconds)
        end
    end

Parameters

Remove(Libraries.Game.Graphics.DirectionalLight light)

This action will remove the given DirectionalLight from the Layer3D.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            layer:Remove(light)
        end

        action Update(number seconds)
        end
    end

Parameters

RemoveAmbientLight()

This action will remove all ambient lighting from the Layer.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)

            layer:RemoveAmbientLight()
        end

        action Update(number seconds)
        end
    end

RemoveAt(integer index)

This action will remove an Item3D at the index location from this layer's array of items, and return the item that was removed.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model cube
            cube:LoadBox(3, 3, 3, color:Maroon())
            cube:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(cube)
            AddLayer(layer)

            Item3D item = layer:RemoveAt(0)
        end

        action Update(number seconds)
        end
    end

Parameters

Return

Libraries.Interface.Item3D: The item that was removed from the item array in the layer.

RemoveCollisionListener(Libraries.Interface.Events.CollisionListener3D listener)

RemoveCollisionListener removes a collision listener to this layer. The collision listener will no longer be notified of collision events occurring on this layer. If the given listener is not a part of this layer, then this action will have no effect.

Parameters

RemoveFromEnd()

This action will remove an Item3D from the end of the array of items in this layer, and return the item that was removed.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model cylinder
            cylinder:LoadCylinder(2, 4, 2, color:Pink())
            cylinder:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(cylinder)
            AddLayer(layer)

            Item3D item = layer:RemoveFromEnd()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Interface.Item3D: The item that was removed from the end of the layer's item array.

RemoveFromFront()

This action will remove an Item3D from the front of the array of items in this layer, and return the item that was removed. This is functionally the same as calling "RemoveAt(0)".

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model cylinder
            cylinder:LoadCylinder(2, 4, 2, color:Pink())
            cylinder:SetPosition(0, 0, 2)

            Layer3D layer
            layer:Add(cylinder)
            AddLayer(layer)

            Item3D item = layer:RemoveFromFront()
        end

        action Update(number seconds)
        end
    end

Return

Libraries.Interface.Item3D: The item that was removed from the front of the layer's item array.

RemoveJoint(Libraries.Game.Physics.Joints.Joint3D joint)

Parameters

RemoveMouseListener(Libraries.Interface.Events.MouseListener listener)

This action will remove a MouseListener from the layer. The listener will no longer receive events from the layer. If the given MouseListener is not on the layer before calling this action, then this action will have no effect.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseListener.
        MouseListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseListener(myListener)
            AddLayer(layer)

            layer:RemoveMouseListener(listener)
        end

        action Update(number seconds)
        end

    end

Parameters

RemoveMouseMovementListener(Libraries.Interface.Events.MouseMovementListener listener)

This action will remove a MouseMovementListener from the layer. The listener will no longer receive events from the layer. If the given MouseMovementListener is not on the layer before calling this action, then this action will have no effect.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseMovementListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseMovementListener.
        MouseMovementListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseMovementListener(myListener)
            AddLayer(layer)

            layer:RemoveMouseMovementListener(listener)
        end

        action Update(number seconds)
        end

    end

Parameters

RemoveMouseWheelListener(Libraries.Interface.Events.MouseWheelListener listener)

This action will remove a MouseWheelListener from the layer. The listener will no longer receive events from the layer. If the given MouseWheelListener is not on the layer before calling this action, then this action will have no effect.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.MouseWheelListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from MouseWheelListener.
        MouseWheelListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddMouseWheelListener(myListener)
            AddLayer(layer)

            layer:RemoveMouseWheelListener(listener)
        end

        action Update(number seconds)
        end

    end

Parameters

RemoveTouchListener(Libraries.Interface.Events.TouchListener listener)

This action will remove a TouchListener from the layer. The listener will no longer receive events from the layer. If the given TouchListener is not on the layer before calling this action, then this action will have no effect.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Events.TouchListener

    class Main is Game

        // For most programs, this should be replaced with 
        // a custom class inheriting from TouchListener.
        TouchListener myListener

        action Main
            StartGame()
        end

        action CreateGame
            Layer3D layer
            layer:AddTouchListener(myListener)
            AddLayer(layer)

            layer:RemoveTouchListener(listener)
        end

        action Update(number seconds)
        end

    end

Parameters

RequireSimulation(boolean flag)

Parameters

Resize(Libraries.Interface.Events.ResizeEvent event)

Parameters

SaveKinematicState(number timeStep)

Parameters

Set(integer index, Libraries.Interface.Item3D item)

This action will set the value of the given index in the layer's array of items to be the given Item3D. The previous value will be overwritten. If the index does not exist in the array (e.g., the given index is larger than the number of items stored in this layer), an error will be thrown.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Interface.Item3D

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Item3D item1
            Item3D item2
            Item3D item3

            Layer3D layer
            layer:Add(item1)
            layer:Add(item2)
            layer:Set(1, item3)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

SetAmbientLight(Libraries.Game.Graphics.AmbientLight light)

This action will set the ambient lighting present in this Layer. If the layer already had ambient lighting, it will be overwritten.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Model
    use Libraries.Game.Graphics.Color
    use Libraries.Game.Graphics.DirectionalLight
    use Libraries.Game.Graphics.AmbientLight

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Color color
            Model box
            box:LoadBox(2, 2, 2, color:Green())
            box:SetPosition(4, 0, 2)

            DirectionalLight light
            light:SetColor(0.8, 0.8, 0.8, 1)
            light:SetDirection(-1, -0.5, 1)

            AmbientLight ambient
            ambient:SetColor(0.4, 0.4, 0.4, 1)

            Layer3D layer
            layer:Add(box)
            layer:Add(light)
            layer:SetAmbientLight(ambient)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

SetAutomaticResizing(boolean resizing)

This action sets if the Layer should automatically respond to ResizeEvents. If this value is true, then the Layer will automatically adjust the camera and resize Items on the Layer when a ResizeEvent occurs.

Parameters

SetAutomaticallyClearForces(boolean flag)

Parameters

SetCamera(Libraries.Game.Graphics.Camera cam)

This action will set the camera being used by this Layer. The camera is used to determine what will be drawn on the screen. Objects will be drawn on the screen as they are seen by the Layer's set camera.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.PerspectiveCamera

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            PerspectiveCamera camera
            Layer3D layer
            layer:SetCamera(camera)
            AddLayer(layer)
        end

        action Update(number seconds)
        end
    end

Parameters

SetContinuousPhysics(boolean flag)

Parameters

SetGravity(Libraries.Compute.Vector3 gravity)

Parameters

SetGravity(number x, number y, number z)

Before overwriting the old data in the array, we want to make sure that any lights in the item's hierarchy are removed from the environment.

Parameters

SetNewItemAdded(boolean flag)

This action indicates that the layer has received a new item that it must manage during collision detection. This is automatically called by the Game engine as necessary, and most users should never need to use this action directly.

Parameters

SetScreenPositionsFromPhysicsPositions()

SetSkybox(Libraries.Game.Graphics.Skybox box)

This action sets the Skybox that should be used by this Layer3D. The given Skybox will be rendered behind all other items in the layer. If the given parameter is undefined, the Layer will not render a skybox. By default, the skybox is undefined.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer3D
    use Libraries.Game.Graphics.Skybox

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            // Assuming we have 6 image files, "Sky-Right.png", "Sky-Left.png", etc.
            Skybox skybox
            skybox:Load("Sky-Right.png", "Sky-Left.png", "Sky-Up.png", "Sky-Down.png", "Sky-Forward.png", "Sky-Back.png")

            Layer3D layer = GetCurrentLayer3D()
            layer:SetSkybox(skybox)
        end
    end

Parameters

SetSubStepping(boolean flag)

Parameters

SetWarmStarting(boolean flag)

Parameters

Show()

This action will show the Layer. When Draw is called on a Layer which is showing, its items will appear on the screen. Layers begin showing by default.

Example Code

use Libraries.Game.Game
    use Libraries.Game.Layer2D
    use Libraries.Game.Graphics.Drawable

    class Main is Game

        action Main
            StartGame()
        end

        action CreateGame
            Drawable square
            square:LoadFilledRectangle(200, 200)
            
            Layer2D layer
            layer:Add(square)

            AddLayer(layer)
            layer:Hide()

            // Since layers are visible by default, it's only necessary to Show
            // them after they've been hidden.
            layer:Show()
        end

        action Update(number seconds)
        end
    end

SolvePhysics(number seconds)

Parameters

StepPhysics(number seconds)

Parameters

SynchronizeTransforms()

TestForCollisions(number seconds)

This action triggers collision detection for this layer during a frame in the Game engine. This action will automatically be called by the Game class as necessary. Most users should never need to use this action directly.

Parameters

Update(number seconds)

This action will update all of the items contained within this Layer. The given number of seconds will be passed to each updated item. This is automatically called by the Game class as needed. Most users will never need to use this action directly.

Parameters