225 %{ #include "Entities/StdH/StdH.h" %} uses "Entities/MusicHolder"; %{ %} class CMusicChanger : CRationalEntity { name "MusicChanger"; thumbnail "Thumbnails\\MusicChanger.tbn"; features "HasName", "HasDescription", "IsTargetable", "IsImportant"; properties: 1 CTString m_strName "Name" 'N' = "", 2 CTString m_strDescription = "", 3 CTFileName m_fnMusic "Music" 'M' = CTFILENAME(""), 4 FLOAT m_fVolume "Volume" 'V' = 1.0f, 5 enum MusicType m_mtType "Type" 'Y' = MT_EVENT, 6 BOOL m_bForceStart "Force start" 'F' = TRUE, components: 1 model MODEL_MARKER "Models\\Editor\\MusicChanger.mdl", 2 texture TEXTURE_MARKER "Models\\Editor\\MusicChanger.tex" functions: procedures: // initialize music Main(EVoid) { // init as model InitAsEditorModel(); SetPhysicsFlags(EPF_MODEL_IMMATERIAL); SetCollisionFlags(ECF_IMMATERIAL); // set appearance SetModel(MODEL_MARKER); SetModelMainTexture(TEXTURE_MARKER); m_strDescription.PrintF("%s: %s (%g)", MusicType_enum.NameForValue((INDEX)m_mtType), (const char*)m_fnMusic.FileName(), m_fVolume); // wait for game to start autowait(0.1f); // repeat forever wait() { // when triggered on (ETrigger) : { // find music holder for this level CEntity *penMusicHolder = _pNetwork->GetEntityWithName("MusicHolder", 0); // if not existing if (penMusicHolder==NULL) { // error CPrintF("No MusicHolder on this level, cannot change music!\n"); // if existing } else { // send event to change music EChangeMusic ecm; ecm.fnMusic = m_fnMusic; ecm.fVolume = m_fVolume; ecm.mtType = m_mtType; ecm.bForceStart = m_bForceStart; penMusicHolder->SendEvent(ecm); } resume; }; } return; } };