Skip to content

Components / Callback functions

Defining components

A component is a class object added to the items described in the Scene file.

Define a block that specifies the component name after the reserved word component.

component [component name] {
         // Inside the component, methods and fields equivalent to classes can be defined
}

Also, if you define a public method with the same name as the component name inside the block, it becomes a constructor. This is called only once when the component object is created.

If you define a public void Update() method, it will be called every frame when the screen is drawn.

Below is a minimal sample code.

component test
{
     public Test()
     {
     }

     public void Update()
     {
     }
}

As the Update() method shown above, if the method having a preset name and arguments is defined within component, it will act as a callback when certain events are triggered.

Callback - Load complete

After the Vket Cloud engine is booted, and completed resource loading and initialization, OnLoaded() will be called just once.

public void OnLoaded()

Callback - Activation / Deactivation of browser tab

This callback can be triggered on the Activation / Deactivation of browser tab.

If the tab becomes active, the IsActivate will be true, while on deactivation IsActivate will be false.

public void OnWindowActivate(bool IsActivate)

Callback - Beginning of page unload

This callback can be triggered on closing the browser tab, or jumping to another URL which actions will cause the current page to unload.

At the moment of this event to trigger, the page resources will still be kept.

public void OnBeforeUnload()

Callback - Page unload

This callback will be triggered before complete unload of the current page.

public void OnUnload()

Callback - Click Node

By calling OnClickNode method as below, this callback method will be triggered when the Item's Node is clicked.

public bool OnClickNode(int NodeIndex)

By returning true after a certain process, the engine's click-to-move process will be disabled.

For compatibility, the function with the void return type can be designated, which click-to-move process will be triggered if the Node is not defined as in the Scene file as clickablenodes.

public void OnClickNode(int NodeIndex)

If you define the OnClickNode method as follows, it will be called when the item's node is clicked.

component Test
{
     public void OnClickNode(int NodeIndex)
     {
     }
}

Callback - Click empty space

This callback will be triggered on clicking an empty space.

public void OnClickEmpty()

Callback - AreaCollider

If you define the OnEnterAreaCollider and OnLeaveAreaCollider methods as follows, they will be called when entering or leaving an "areacollider" type item.

component AreaCollider
{
     Item m_Item;

     public CAreaCollider()
     {
         m_Item = hsItemGet("component name");
     }

     public void OnEnterAreaCollider()
     {
         hsSystemOutput("OnEnterAreaCollider" + m_Item.GetName() + "\n");
     }

     public void OnLeaveAreaCollider()
     {
         hsSystemOutput("OnLeaveAreaCollider" + m_Item.GetName() + "\n");
     }
}

Callback - ItemCollider

If you define the OnItemEnterCollider and OnItemLeaveCollider methods as shown below, they will be called when the Item with this component enters or exits the collider of a node within another Item. Currently, only box colliders are supported.

component CollisionTest
{
    public void OnItemEnterCollider(int ItemInstanceID, int NodeIndex)
    {
        Item CollidedItem = hsItemGetByInstanceID(ItemInstanceID);
        string NodeName = CollidedItem.GetNodeNameByIndex(NodeIndex);

        hsSystemOutput("[OnItemEnterCollider] ItemName: %s, NodeName: %s\n" % CollidedItem.GetName() % NodeName);
    }

    public void OnItemLeaveCollider(int ItemInstanceID, int NodeIndex)
    {
        Item CollidedItem = hsItemGetByInstanceID(ItemInstanceID);
        string NodeName = CollidedItem.GetNodeNameByIndex(NodeIndex);

        hsSystemOutput("[OnItemLeaveCollider] ItemName: %s, NodeName: %s\n" % CollidedItem.GetName() % NodeName);
    }
}

Callback - Unselecting Objects

OnUnselectNode

public void OnUnselectNode(int NodeIndex)

By clicking on an Item's Node beforehand, and clicking an avatar after, this will be considered as unselecting a Node.

This will trigger OnUnselectNode() with the NodeIndex as an argument.

OnUnselectAvatar

public void OnUnselectAvatar(string Name)

By clicking on an avatar beforehand, and clicking an Item's Node after, this will be considered as unselecting an avatar.

This will trigger OnUnselectNode() with the avatar's name as an argument.

Callback - Screen Size Change

This callback will be triggered when the screen size is changed. The width and height arguments contains the screen's width and height after resize.

public void OnResize(int width, int height)

Callback - Custom State/Custom Data

A callback method that receives any data sent by the room's manager.

component CustomDataReceiver
{
     public void OnReceiveCustomState(string id, string type, string data)
     {
     }

     public void OnReceiveCustomData(string id, string type, string data)
     {
     }
}

Callback - GUI button

public void OnClickedButton(string layerName, string buttonName)

If you define the OnClickedButton() method as below, it will be called when the GUI button is tapped.

component ButtonClickable
{
     public void OnClickedButton(string layerName, string buttonname)
     {
         if (layerName == "MenuUI") {
             hsSystemOutput("Button Clicked! :" + buttonname + "\n");
         }
     }
}

Callback - physics collision detection

public void OnPhysicsCollision(int ID0, int ID1)

Called when objects with physics set collide with each other.

The ID is called PhysicsID and can be obtained from GetPhysicsIDByNodeName of the Item class or GetPhysicsID of the Player class.

Get the PhysicsID in advance in the constructor, etc., save it in a member variable, and compare it in the callback function to determine if there is a collision.

Note that the callback function may be called many times with the same combination of IDs immediately after a collision, so when a collision causes particles to regenerate, it is necessary to prevent them from regenerating too many times.

component Test {
Item m_Field;

int m_PhysicsIDFloor,
m_PhysicsIDCube;

    public Test()
    {
        m_Field = new Item();
        m_Field._SetItemFromStructPageNumber(system.GetStructPageNumber());

        m_PhysicsIDFloor = m_Field.GetPhysicsIDByNodeName("Floor");
        m_PhysicsIDCube = m_Field.GetPhysicsIDByNodeName("Cube");
    }

    public void OnPhysicsCollision(int ID0, int ID1)
    {
        if ((ID0 == m_PhysicsIDFloor && ID1 == m_PhysicsIDCube) ||
            (ID1 == m_PhysicsIDFloor && ID0 == m_PhysicsIDCube))
        {
            // Floor and Cube collided
        }
    }
}

Callback - In-field collider detection

Called when the collider with VKC Node Collider specified "InView" enters the field of view or goes out of the field of view.

Components must be set to the same item.

public void OnEnterViewCollider(string NodeName)
public void OnLeaveViewCollider(string NodeName)

Callback - Text chat

Called when user sent message to the text chat.

public void OnReceiveTextChat(string ID, string PlayerName, string Text)

Callback - Player Avatar Click

This callback is triggered when other player's avatars are clicked.

public void OnClickedAvatar(string PlayerID)

Callback - Video

This callback is triggered on the beginning of playing a video.

public void OnPlayVideo()

This callback is triggered on pausing a video.

public void OnPauseVideo()

This callback is triggered on resuming a paused video.

public void OnResumeVideo()

This callback is triggered on stopping a video.

public void OnStopVideo()

Callback - Property Change

This callback is triggered when the item's property has been changed. if the Value is same as before, this will not be triggered.

public void OnChangedProperty(string Key, string Value)

Callback - Message

public void OnReceiveMessage(HSMessage message)

This will be called when the item receives a message. The argument message contains the received data and sender information.