I have implemented 2 Javascript classes in C++, Camera and Point. I
can currently do this:

[code]
var camera = new Camera;
var point = new Point(x, y, z);
camera.position = point;
[/code]


I can get the values of point, inside Camera:position and set the
position of the camera fine.
My issue is that i don't know how to return a Point object when I do:

[code]
var point = camera.position;
[/code]


This is what I current have for setting and getting the
Camera::position variable, which is of type Point.


/**
 * Get the position of camera.
 *
 * <javascript>
 * usage:       var vector = $camera.position;
 * </javascript>
 */
v8::Handle<v8::Value>
jsi_Camera_get_position(v8::Local<v8::String> property, const
v8::AccessorInfo& info)
{
        JSCamera* camera = jsi_internal_Camera_unwrap_camera(info.Holder());

        // Change the camera.
        std::stringstream ss;
        ss << "Camera.position (get)";
        BBB::log(ss.str());

        // How to return a Point?

        return v8::True();
}

/**
 * Set the position of camera.
 *
 * <javascript>
 * usage:       $camera.position = new Point(5.0, 5.0, 10.0);
 * </javascript>
 */
void
jsi_Camera_set_position(v8::Local<v8::String> property,
v8::Local<v8::Value> value, const v8::AccessorInfo& info)
{
        JSCamera* camera = jsi_internal_Camera_unwrap_camera(info.Holder());

        // ------------------------------------- //
        // Make sure we have an object.
        if (!value->IsObject()) {
                std::stringstream ss;
                ss << "Camera:position -- Argument must be of type [object 
Point].";
                BBB::log(ss.str());
                return;
        }

        // Get the C++ class in this javascript object.
        v8::Local<v8::Object> pointObj   = value->ToObject();
        v8::Local<v8::External> external = v8::Local<v8::External>::Cast
(pointObj->GetInternalField(0));
        C4::Point3D* point = static_cast<C4::Point3D *>(external->Value());
        // ------------------------------------- //

        // Set the position of the node.
        camera->SetNodePosition(*point);

        // Change the camera.
        std::stringstream ss;
        ss << "Camera:position (set)";
        BBB::log(ss.str());
}
--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to