VirtualMachine Class Reference
[VirtualMachine Related Documentations]

#include <VirtualMachine.h>

Inherited by OGLMachine, and VedaMachineDreamcast.

List of all members.


Detailed Description

Pure Virtual class for all machine specific methods. These methods should be completed for each machines in separate inherited libraries. This class will keep 100% independant from any other classes or API. This should be possible to only use a VirtualMachine for a whole program, to reach hardware abstraction.
Methods documentation has been grouped by theme:

Author:
victorien -dot- ferry at free -dot- fr, with the mankind demo group team: www.m4nkind.com

Definition at line 38 of file VirtualMachine.h.

Public Types

enum  eVMResult { vmr_OK = 0, vmr_FAILED }
 error enum for InitMachine() More...
enum  InternalObject3DBuffer_InitBit { bOb3D_VertexNormal = 1, bOb3D_VertexUVMapping = 2, bOb3D_VertexRGBA = 4 }
 see VirtualMachine::NewObject3DBuffer() More...
enum  eMachineLocalization {
  eMachineLocalization_LocalisationNotImplemented = 0, eMachineLocalization_English, eMachineLocalization_French, eMachineLocalization_SpanishCastellano,
  eMachineLocalization_German, eMachineLocalization_Italian, eMachineLocalization_Polish, eMachineLocalization_Portuguese
}
 This enum spots a cultural langage. returned by GetCurrentWorldLocalizationEnum(). More...

Public Member Functions

 VirtualMachine (void)
 Constructor. There should only be members initialisation there.
virtual ~VirtualMachine (void)
 Destructor.
virtual eVMResult InitMachine ()=0
 Init the machine. It would open a screen and do the init for each theme (3D,sound,...) Then, the Main Screen stands as the ViewPort GetDefaultViewPort() . the machine closing should be done at deletion.
virtual void NewObject3DBuffer (InternalObject3DBuffer **_ppVertexAndPolygonBufferOut, unsigned int _maxNbVertex, unsigned int _maxNbTriangle, unsigned int _extraMemberFlags)=0
 Ask the Creation of a new InternalObject3DBuffer you can then fill with InternalObject3DBuffer::GetFirstVertex() , InternalObject3DBuffer::GetFirstTriangle(). Important: All the vertex members and polygon index are inited to zero when built. and InternalObject3DBuffer::SetNumberOfActiveTriangle() . Then the object can be positionned with the matrix methods in VirtualMachine::InternalViewPort, and drawn with VirtualMachine::InternalViewPort::RenderMesh(). The object shape can be dynamic and rebuilt, until a call to VirtualMachine::InternalObject3DBuffer::CompileAsStatic(). In edition compilation mode, objects had to be destroyed with VirtualMachine::DeleteObject3DBuffer().
virtual void DeleteObject3DBuffer (InternalObject3DBuffer **_ppBufferToDestroy)=0
 Destroy objects previously created with NewObject3DBuffer().
virtual void NewTexture (InternalTexture **_ppTextureOut)=0
 Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().
virtual void DeleteTexture (InternalTexture **_ppTextureToDestroy)=0
 Destroy objects previously created with NewTexture().
virtual void NewViewPortChild (InternalViewPort **_ppViewPortOut, InternalViewPort *_pFatherViewPort=0L)=0
 Ask the Creation of a new InternalViewPort, that must be the child of another ViewPort, specified by _pFatherViewPort.if no father is specified, the new ViewPort will be the child of the default root ViewPort. To create another Root ViewPort, create a texture and use VirtualMedia::NewViewPortOnTexture(). In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void NewViewPortOnTexture (InternalViewPort **_ppViewPortOut, InternalTexture *_pRootTexture, unsigned int _np2PixelWidth, unsigned int _np2PixelHeight, InternalTexture::TextureImageLayerEnum _layerToAffect)=0
 Ask the Creation of a new Root InternalViewPort, that will render on a texture image. specified by _pRootTexture. You got to create a texture first for parameter _pRootTexture. In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void DeleteViewPort (InternalViewPort **_ppViewPortToDestroy)=0
 Destroy any objects previously created with NewViewPortChild() or NewViewPortOnTexture(). If it has children, children are detached , not destoyed, but are invalid.
InternalViewPortGetDefaultViewPort ()
 Access to the default screen object created with InitMachine().
virtual float GetPlayFrequency ()=0
 Return the machine main play frequency, in herz, (tick per sec).
virtual void EnableMediaSound (SoundInterface *_pNoisyObject, bool _enable=true)
 Register a SoundInterface object that will then generate a mixed sound through SoundInterface::ProcessSoundInterupt(). The sound will start instantly. if false, Unregister a media object previously registered with EnableMediaSound(,true). The sound stops instantly. Note, that if you choose to use the BaseObject implementation, class VirtualMedia will manage the sound in its own way, and you will not need to use this method.
virtual void SetSoundCurrentTime (int _seconds, unsigned int _fraction)=0
 force a date to the clock passed to the sound objects.
virtual void SetSoundVolume (float _newVolumeValue)=0
 tool: change main volume [0,1]. Yes, you can saturate when >1.
virtual float GetSoundVolume ()=0
 tool: get main volume value [0,1].
virtual void GetCurrentSoundBufferImage (float **const _ppSoundBuffer, unsigned int *_pLength) const =0
 return an image of the current short sound buffer which is currently played. This is always a 2 float(stereo left,right) table. the play frequency of this sound signal is given by GetPlayFrequency() . The buffer size may vary in time and implementation, and this table is refresh on an undefined rate. It can be used by sound preview methods or live effects.
virtual void ShutTheFuckUp ()
 Now, AzurVeda virtual machine implements a very efficient BASS technology known as "ShutTheFuckUp" ! Yes, it will unregister all sound objects to silent the machine.
virtual eMachineLocalization GetCurrentWorldLocalizationEnum ()=0
 Return the language of the machine, as a simple enum. It can be used to display one or the other langage.
virtual void ProcessInterface ()=0
 Process the Machine's interface messages (mouse,keyboard,...), in the real time. Then methods like VirtualMachine::GetQuitMessage() are updated.
bool GetQuitMessage ()
 If true, means that the user want to quit:.
virtual bool FileRequester (const char *_pDisplayString, char *_pResultFileName, unsigned int _nameMaxLength)=0
 In edition mode, ask a file path to a file requester. the string format should vary, but will be compatible with LoadFile() and SaveFile().
virtual bool SaveFile (const char *_pFilePath, const char *_chunkToWrite, unsigned int _ChunkLength, bool _append=false)=0
 DEPRECATED for the moment: use class PackResource instead load a file into a memory chunk. You can load all in one row, or stream. memory is to be deleted by the CALLER with operator: "delete [] pointer", for each succesfull call. return 0L if failed. write a file from a memory chunk. You can save all in one row, or stream.
virtual void Sleep (unsigned int _milliseconds)=0
 in edition mode, redirection of machine task wait.

Protected Attributes

InternalViewPortm_pDefaultViewPort
 this is the default viewport, it stands the whole screen by default. Used by GetDefaultViewPort().
bool m_QuitMessage
 If true, means that the user want to quit. Updated by ProcessInterface().
SoundUpdateListCellm_pFirstSoundObject
 start of the chained list of the sound object update method:

Classes

class  InternalObject3DBuffer
 Nested class to define a 3D object as a vertex and a polygon list. You ask the creation of it with VirtualMachine::NewObject3DBuffer(), then defines its shape by filling the list you get with GetFirstVertex() and GetFirstTriangle(), then it can be rendered with RenderMesh(). In order to optimize a static shape, use CompileAsStatic() In edition mode, it can be destroyed with VirtualMachine::DeleteObject3DBuffer(). More...
class  InternalTexture
 Nested class that defines a texture to render an object with VirtualMachine::RenderMesh(). More...
class  InternalTriangle
 Nested class that defines a Triangle Polygon for use with InternalObject3DBuffer::GetFirstTriangle(). Note: this triangle definition should not change (no more member or virtual methods).sizeof(InternalTriangle) must always be 12 because it is sometimes used as a list element. More...
class  InternalVertex
 Nested class that defines a vertex for use with InternalObject3DBuffer::GetFirstVertex(). Note: this vertex definition should not change (no more member or virtual methods). It is sometimes used as a list element. More...
class  InternalViewPort
 Nested class that defines a viewport where to draw (screen, sub-screen,texture rendering screens.) This is a virtual class. Construction must be done by NewViewPortChild(), NewViewPortOnTexture() or InitMachine() for the default viewport accessible with VirtualMachine::GetDefaultViewPort() which stands for the main screen. More...
class  SoundBufferToAddYourSignal
 Defines the sound buffer to be mixed by SoundInterface::ProcessSoundInterupt(). More...
class  SoundInterface
 Virtual base class for any kind of object that need to generate a sound signal. You have to extend it and implement ProcessSoundInterupt(). (see exemple in VirtualMedia.cpp) For more informations, look VirtualMachine::EnableMediaSound(). More...
class  SoundUpdateListCell
 nested class to manage update sound object list; More...


Member Function Documentation

virtual void NewTexture InternalTexture **  _ppTextureOut  )  [pure virtual]
 

Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().

Parameters:
_ppTextureOut the object returned, or 0L if failed.(no mem ?)


Member Data Documentation

InternalViewPort* m_pDefaultViewPort [protected]
 

this is the default viewport, it stands the whole screen by default. Used by GetDefaultViewPort().

Definition at line 840 of file VirtualMachine.h.

Referenced by GetDefaultViewPort().

SoundUpdateListCell* m_pFirstSoundObject [protected]
 

start of the chained list of the sound object update method:

Definition at line 852 of file VirtualMachine.h.

bool m_QuitMessage [protected]
 

If true, means that the user want to quit. Updated by ProcessInterface().

Definition at line 843 of file VirtualMachine.h.

Referenced by GetQuitMessage().


The documentation for this class was generated from the following file:
      /\/\        4         N         k         !         N         D
                      _______  _ __ ___  _____            ___ _ _  ____
     ___________  __//___   /________  |/    / ___________\_______/    \
    /   _   _   \/   _     /    _   /      _/_/____/    _       __     /
   /    /   /       /     /    /    \      \/     /    /    \   \     /
  \\___/___/___/    ¯    _____/_____/       ______\___/_____/\________\\
               \________/_ ___ __ l____\      /elD!  
                 http://www.m4nkind.com \____/