QCake verwendet anstelle von plib-psl die Sprache SPL von Clifford. Sie funktioniert unter Linux i386 und ppc, Mac-OSX und Windows. Die plib-psl habe ich nur unter Linux i386 zum laufen gebracht.

Die SPL enthält einen just in time Compiler. Die Sprache nennt sich SPL.

QCake stdlib API:
-----------------

object Vector  // x,y,z Vector
{
    + oder +=     -> method operator_add(a, b)

    - oder -=     -> method operator_sub(a, b)

    method init(_x, _y, _z)
}

object QCO  // Object reference of a 3D Object
{
  method getattr(char *string)

  Vector method getpos()

  Vector method getrot()

  method setpos(Vector v)

  method setrot(Vector r)

  method rotate(Vector r)          // rotate relativ axis

  method move(Vector v)            // move delta v
  
  method getpos_x()                // position
  method getpos_y()
  method getpos_z()

  method getrot_h()
  method getrot_p()
  method getrot_r()

  method setsequence(int s, int m) // s -> sequence, m -> mode

  method Ref() // read the reference
  
  method init(_id)   // get a reference of a 3D Object
}



QCake API:
----------

    int getRef(int id); // get a reference of a 3D Object

    setPosition (int objref, float x, float y, float z, float h, float p, float r); // Set the position and angle of a 3D Object

    string* getAttribut(int id, char *string); // get the attribut of the object(id)

    setAttribute(int id, char *string, char *value); // set the attribute of the object(id)

    int getMouse(int achse); // get the X(0) or Y(1) Coordinate from the Mouse

    int getMouseButton(); // get the Button value Bit0 = LelftButton Bit1 = MidButton Bit2 = RightButton

    int getMouse(int achse); // get the X(0) or Y(1) Coordinate from the mouse pointers

    int get3DMouse(int achse); // get the X(0) or Y(1) or Z(2 )Coordinate from the 3D-World behind the mouse pointers first 3D Object

    float getJoystick(int js,int achse); // get the value from js 0,1 and the achse 0,1,2,3,4,5,6,7,8

    int getJoyButton(int js); // get the Button value

    int getKey(); // get the last pressed key

    switchScene(int objref); // switch the Scene to the Display

    playSound(int objref); // play the Sound

    stopSound(int objref); // play the Sound

    switchCamera(int objref); // View from Camera to the Scene

    srand(int seed); // set start for rand

    float rand(void); // get random number 0 .. 1 float

    Rotate (int objref, float h, float p, float r);  // Rotate relative angel h,p,r

    addRelTorque (int objref, float x, float y, float z);

    addRelForce (int objref, float x, float y, float z);

    setAngVel (int objref, float x, float y, float z);

    setLinVel (int objref, float x, float y, float z);

    setSequence (int objref, int seq, int mode);  // Set the Sequence of md2 Objects

    float getPositionX (int objref); // Get the position and angle of a 3D Object
    
    float getPositionY (int objref); // Get the position and angle of a 3D Object

    float getPositionZ (int objref); // Get the position and angle of a 3D Object

    float getPositionH (int objref); // Get the position and angle of a 3D Object

    float getPositionP (int objref); // Get the position and angle of a 3D Object

    float getPositionR (int objref); // Get the position and angle of a 3D Object

    int astarFindPath (int pl, int sx, int sy, int tx, int ty); // find path for player from source to target
    
    int astarReadPathX (int pl, int numx); // read x coordinate path for player 

    int astarReadPathY (int pl, int numy); // read y coordinate path for player

    int astarReadMap (char file); // read map file "." walkabel or unwalkable

    int astarReadMapValue (int x, int y); // read map value[x][y]

    int astarInit (width, height, tileSize, people); // by default (40,40,1,8) it exist, but if you want to change the values

    tmpobjInit (int objref, float x, float y, float z, float h, float p, float r); // make a temp. 3D-OBJ from objref and position it.

