/* <copyright>
This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
(c) Copyright 2011 Motorola Mobility, Inc.  All Rights Reserved.
</copyright> */

// RDGE namespaces
var RDGE = RDGE || {};

/* 
* shadow light - a modified camera used to describe a shadow casting light
*/
RDGE.shadowLight = function () {
    // inherit from the base class
    this.inheritedFrom = RDGE.camera;
    this.inheritedFrom();

    // matrices needed for shadow projection
    this.invViewMatrix = RDGE.mat4.identity();
    this.mvpMatrix = RDGE.mat4.identity();

    // texture matrix
    this.shadowMatrix = RDGE.mat4.identity();
    this.shadowMatrix = RDGE.mat4.scale(this.shadowMatrix, [0.5, 0.5, 0.5]);
    this.shadowMatrix = RDGE.mat4.translate(this.shadowMatrix, [0.5, 0.5, 0.5]);

    // cached references
    this.renderer = null;
    this.cameraManager = null;

    // shadow bias offset
    this.shadowBias = 0.0195;

    this.init = function () {
        this.renderer = RDGE.globals.engine.getContext().renderer;
        this.cameraManager = this.renderer.cameraManager();
    };

    /*
    *	makes the light the current 'camera'
    */
    this.activate = function () {
        this.cameraManager.pushCamera(this);
    };

    /*
    *	restores the camera stack
    */
    this.deactivate = function () {
        this.cameraManager.popCamera();
    };
}