Code Search for Developers
 
 
  

kcommandprocessor.h from Spatial Knowledge Experiments at Krugle


Show kcommandprocessor.h syntax highlighted

/*
    Copyright (C) 2003, 2004, 2005 by Luca Cappa
    Written by Luca Cappa groton@users.sourceforge.net
  
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
  
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
  
    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef __COMMAND_H__
#define __COMMAND_H__

#include "ivideo/graph3d.h"

#include "iutil/vfs.h"
#include "iutil/plugin.h"

#include "ivaria/conin.h"

#include "csutil/strhash.h"

//
//Forward declarations.
struct iEngine;
struct iCamera;
struct iConsoleOutput;
struct iObjectRegistry;
struct iPluginManager;
class csMeshList;
class SKE;

/**
 * This class represents a command that can be send thru the console
 * or by pressing a key from within the engine.
 * It is a static class which contains only static data.
 */
class KCommandProcessor
{
private:
  /// The engine that this command interpreter is using.
  static iEngine* s_engine;
  /// The corresponding camera object for this command interpreter.
  static iCamera* s_camera;
  /// The iGraphics3D interface to use.
  static iGraphics3D* s_g3d;

  
  /// The iObjectRegistry interface to use.
  //static iObjectRegistry* object_reg;
  /// The console.
  static iConsoleOutput* s_console;

  /**
   * If this variable is non-NULL there is a running script from
   * which commands are read and executed (one command every frame).
   */
  static iFile* s_script;

public:
  
  static csStringHash s_cmdSet;
  
  /// Call this first.
  static void Initialize (iCamera* camera, iConsoleOutput* p_console);

  //??? WHERE DOES THIS INTERFACE IS USED TO????
  /// This struct can be used as a console input callback
  struct PerformCallback : public iConsoleExecCallback
  {
    SCF_DECLARE_IBASE;

    PerformCallback () 
    { 
      SCF_CONSTRUCT_IBASE (0); 
    }
    
    virtual ~PerformCallback () 
    { 
    }

    virtual void Execute (const char* cmd);
  };

  /// Perform the command and return true if it was a valid command.
  static bool _Perform (const char* cmd, const char* arg = 0);

  /// Perform the command and return true if it was a valid command.
  static bool _PerformFormat (const char* format, ...);

  /**
   * Perform the command line (split in command and args),
   * perform the command and return true if it was a valid command.
   */
  static bool _PerformLine (const char* line);

  /// Virtual override of csSimpleCommand.
  virtual bool PerformLine (const char* line);

  /// Start a script of commands from a file.
  static bool StartScript (const char* scr);

  /**
   * Check if a script is running and if so, return one command from the
   * script. This routine will return false if there is no script, or
   * if the last command from the script has been read. The script will
   * be closed automatically in the last case.
   */
  static bool GetScriptLine (char* buf, int max_size);

  /// Change boolean variable value
  static void ChangeBoolean (const char* arg, bool* value, const char* what);
  /// Change value to one of listed in choices[]
  static void ChangeChoice (const char* arg, int* value, const char* what, const char* const* choices, int num);
  /// Change float variable value
  static bool ChangeFloat (const char* arg, float* value, const char* what, float min, float max);
  /// Change int variable value
  static bool ChangeInt (const char* arg, int* value, const char* what, int min, int max);
  /// Change long variable value
  static bool ChangeLong (const char* arg, long* value, const char* what, long min, long max);

  /**
   * Additional command handler. If not 0, this handler will be called
   * BEFORE internal handler, giving your handler a chance to override
   * default behaviour. Should return TRUE if command has been recognized.
   */
  typedef bool (*CmdHandler) (const char* cmd, const char* arg);
  static CmdHandler s_extraHandler;
};

#endif // __COMMAND_H__




See more files for this project here

Spatial Knowledge Experiments

A simulation of 3D virtual worlds for psychological experiments

Project homepage: http://sourceforge.net/projects/ske
Programming language(s): C,C++,Perl
License: other

  isense/
  joystick/
  Jamfile
  KImageCardinalDirection.h
  SKE.cpp
  SKE.h
  eulerangles.c
  eulerangles.h
  ikdraggable.cpp
  ikdraggable.h
  ikdraghandler.h
  ikmission.h
  ikxmlreader.h
  ikxmlwriter.h
  kappstate.cpp
  kappstate.h
  kbasedraggable.cpp
  kbasedraggable.h
  kbasedraghandler.cpp
  kbasedraghandler.h
  kblock.cpp
  kblock.h
  kblockId.h
  kblockid.cpp
  kcamera.cpp
  kcamera.h
  kcollision.cpp
  kcommandprocessor.cpp
  kcommandprocessor.h
  kconstant.cpp
  kconstant.h
  kcursor3d.cpp
  kcursor3d.h
  kdata.cpp
  kdata.h
  kdatalist.cpp
  kdatalist.h
  kdragmanager.cpp
  kdragmanager.h
  keventhandlermanager.cpp
  keventhandlermanager.h
  kflags.cpp
  kflags.h
  kimagecardinaldirection.cpp
  kkeys.cpp
  kkeys.h
  kkeystate.cpp
  kkeystate.h
  klandmark.cpp
  klandmark.h
  klandmarklist.cpp
  klandmarklist.h
  klight.cpp
  klight.h
  klightlist.cpp
  klightlist.h
  kmap.cpp
  kmap.h
  kmission.cpp
  kmission.h
  kmissiontype.cpp
  kmissiontype.h
  kmode.cpp
  kmode.h
  kmousemanager.cpp
  kmousemanager.h
  kobject3d.cpp
  kobject3d.h
  korientation.cpp
  korientation.h
  kpath.cpp
  kpath.h
  kpathfollower.cpp
  kpathfollower.h
  kplayer.cpp
  kplayer.h
  kposition.cpp
  kposition.h
  kquaternion.cpp
  kquaternion.h
  ksaveddatamanager.cpp
  ksaveddatamanager.h
  ksegment3.h
  ksign.cpp
  ksign.h
  ksprite3d.cpp
  ksprite3d.h
  ksprite3dlist.cpp
  ksprite3dlist.h
  kterrain.cpp
  kterrain.h
  kthing.cpp
  kthing.h
  kutil.cpp
  kutil.h
  kwireframe.cpp
  kwireframe.h
  kxmlhelper.h
  movement1d.h
  movement3d.h
  quattypes.h