Initial Commit
PowerVR Insider SDK installer and patch

This change includes the (compressed) PowerVR Insider SDK installer, removing the need for all of us to register with Imagination Technologies to obtain it. Note that the installer does not contain the SDK, but connects to the Internet to download it, according to the installation options you choose. See the Wiki for instructions.

Add a patch for the PowerVR Insider SDK's Blender exporter script. This patch removes launch of the Qt gui screens, which cause Blender to crash (at least on OS X) whenever it is quit following a POD export. The [Current] export settings must therefore be established by other means before invoking the patched exporter, such as by running the PVRGeoPODGUI application or by editing the PVRGeoPOD configuration file under your home directory (or you can run the unpatched exporter once before patching, leading to one Blender exit crash).
Add joysticks (scaffolding: camera control)

A set of controls has been added to the 2D layer: two joysticks and a menu
button. The right joystick rotates the camera. The left joystick moves
the camera left/right and forward/backward or up/down. The menu button
toggles the function of the y-axis of the left joystick between
forward/backward and up/down.

The "Hello World" mesh and resource has been removed, and replaced by
a sample constructed in Blender. This sample is illustrative in that it
is not entirely trivial (consisting of two sub-meshes) and sports a
texture mapped over both submeshes via a UV map. The texture resource
file (which must be part of the application resources available at
runtime) is referenced via relative pathing from sample.blend.

The object "HatCube" is fixed at the origin (with its cube sub-object
centered at the origin), with the camera moving freely in the scene.
World Interface

This change contains the first revision of the world interface, the
bridge between the game runtime and the game actors.

The game runtime runs the game simulation according to its rules,
permitting actors to act on game objects and notifying them of game
events. For example, forces can be applied to movable game objects,
and game object position update events are provided in response. When
collisions occur between game objects, the game runtime takes
appropriate steps, such as reducing health of a game object hit by a
projectile or adjusting velocities, such as that of a cyborg that has
collided with a wall.

A game actor represents either a single human player or a single
computer player. In the case of the computer player, the AI actor
surfaces events from the game runtime to the AI algorithms, and allows
the algorithms to act on game objects. In the case of the local human
player, the human actor updates the user interface in response to game
object events, and relates UI control manipulation to game object
method invocations.
Scene Parsing

The following items have been added:
  * Controller module: the controller enforces the rules of the game, and
    coordinates among AI and UI through the world interface. The controller
    notifies all actors (one AI instance and one player instance represented
    by the local UI to start with) of changes in game state (including
    active game object creation, active game object position changes, etc.)
  * Cyborg model: a placeholder for the cyborg's model has been added; it
    contains the sample's HatCube content, with a correctly named mesh for
    the actual cyborg
  * Level file: a placeholder for the actual first level; it contains two
    instantiations of the cyborg model, one for the AI and one for a
    human player
  * Scene file: an XML file representing the first level
  * DotScene file creation tool: this Blender addon is used to convert a
    Blender level file to an XML scene file, which is read by the
    controller's XML parser; to generate the .scene file <n>.scene from
    the level file <n>.blend, invoke
    "File/Export/Ogre3D (.scene and .mesh)," and then uncheck all
    options except for "Export Scene" in the "Export Ogre" configuration
    panel; note that if the .scene file is malformed and does not lead
    to the creation of at least one game object, the controller
    will assert

The controller has a C++ interface targeted at the implementation of the
game world module, and a C interface through which it can be started
from Cocoa Touch.

The controller does not yet instantiate world actors, and therefore what is
visible on the screen with this change is still
sample.blend/sample.pod's content.
World Actor Wire-Up

The controller now instantiates world actors: one for each cyborg
encountered during parsing of the .scene file. So far the actors are
initialized and their OnNewActiveObject methods are invoked for each
active object that has been read in from the scene.

The screen now shows the content of 1.scene, courtesy of the UIActor.
There are two cyborgs on the map, ready to square off. The camera controls
for rotating and moving around the map are still in place.
Game World and Debug Interface Implementations

This change contains the following:
  * An implementation of the global game world functions
    GetMapDimensions and GetObjectsInAABB by the controller
  * A pure C debug interface that supports creation of a configurable
    tile grid and tile highlighting
  * A sample invocation of both of the above by the AI actor: this
    actor now causes a tile grid to be drawn and highlights the
    center tile in red; it also writes a couple of position query
    results to the console
  * An adjustment to the startup camera position: the map is now
    shown a bit from above, so that the tile grid can be seen; manual
    camera movement and rotation remains unchanged
More human-looking cyborg

Downloaded from blenderswap.
Fixed z-axis location
Scaled and posed cyborg
Scaled and posed cyborg
Tile Grid Performance Improvement

Experimenting with various tile grid sizes showed that it performed poorly
when scaling up. This change makes even large grids perform well. This is
particularly useful given the camera's current very long (default) far
clipping distance.

The number of CC3Nodes making up the tile grid is now constant (2). Prior
to this change, it was rows * columns + 1. The number of vertices is
unchanged, but color data has been added.
Integration Branch Preparation

The following changes have been made to the Cocos3D fork to prepare it
for merging into master:
  * All files and directory trees have been deleted except for the
    tree ./cocos3d/
  * The tree ./cocos3d/ has been moved to cbs/cocos3d/
Prepare for Cocos3D Integration

The directory tree rooted at cbs/cocos3d/ has been deleted. This will
allow merging with the branch cocos3d_integration (with which no shared
history exists), as no files will overlap.
Merge branch 'cocos3d_integration'

This merges cocos3d_integration into master. cocos3d_integration is
itself a branch from cocos3d_fork, found at
git@github.com:rbit/cocos3d.git.
Fix Project After Cocos3D Integration

The Cocos3D integration caused (expected) build break for these reasons:
  * Additional include paths were needed
  * Some cocos3d source files had been removed and others added (or
    moved to a different directory), which needs to be reflected in
    the cbs Xcode project file
  * An interface property change had taken place, forcing cbsLayer.m
    to be updated
Refactor CC3GLSLVariable class hierarchy & cleanup docs.

Combine CC3OpenGLESStateTrackerGLSLAttribute and CC3OpenGLESStateTrackerGLSLUniform
class functionality into parent CC3GLSLAttribute and CC3GLSLUniform respectively.
Add class comment notes to several classes. Add textures expected by demo PODs,
even though not visible, to stop error messages.
Merge branch 'cocos3d_fork' into cocos3d_integration

Conflicts resolved by keeping deleted files deleted.

Conflicts:
	Demos/CC3DemoMashUp/CC3DemoMashUp-Mac.xcodeproj/project.pbxproj
	Demos/CC3DemoMashUp/CC3DemoMashUp-iOS.xcodeproj/project.pbxproj
Integration Branch Preparation after Merge

Delete new files from Demos directory.
Merge branch 'cocos3d_integration'

Upstream merge.