bool GuiSound::Load(const u8 * snd, s32 len, bool isallocated) { FreeMemory(); if(!snd) return false; sound = (u8 *) snd; length = len; allocated = isallocated; SoundHandler::Instance()->AddDecoder(voice, sound, length); SoundDecoder * decoder = SoundHandler::Instance()->Decoder(voice); if(!decoder) return false; if(!decoder->IsBufferReady()) { SoundHandler::Instance()->RemoveDecoder(voice); return false; } SetLoop(loop); return true; }
void APChannel::SetLoop(uint32 startOffset, uint32 length, AP_LoopType type) { ASSERT(startOffset <= sampLength); ASSERT(startOffset + length <= sampLength); SetLoop(sampAddress, startOffset, length, type); }
Sound& Sound::operator =(const Sound& right) { // Here we don't use the copy-and-swap idiom, because it would mess up // the list of sound instances contained in the buffers // Detach the sound instance from the previous buffer (if any) if (myBuffer) { Stop(); myBuffer->DetachSound(this); myBuffer = NULL; } // Copy the sound attributes if (right.myBuffer) SetBuffer(*right.myBuffer); SetLoop(right.GetLoop()); SetPitch(right.GetPitch()); SetVolume(right.GetVolume()); SetPosition(right.GetPosition()); SetRelativeToListener(right.IsRelativeToListener()); SetMinDistance(right.GetMinDistance()); SetAttenuation(right.GetAttenuation()); return *this; }
BOOL CMoviePlayerDlg::OnInitDialog() { CPersistDlg::OnInitDialog(); GetWindowText(m_Caption); m_Frm = CMainFrame::GetThis(); ASSERT(m_Frm != NULL); CWhorldView *View = m_Frm->GetView(); m_Movie.SetView(View); SetLoop(FALSE); SetTitle(); GetWindowRect(m_InitRect); m_Hidden = FALSE; m_Transport = IsOpen() ? PLAY : STOP; // if movie is open, auto-play it SetTransport(m_Transport); m_Open.SetIcon(AfxGetApp()->LoadIcon(IDI_OPEN)); m_Save.SetIcon(AfxGetApp()->LoadIcon(IDI_SAVE)); m_TakeSnap.SetIcon(AfxGetApp()->LoadIcon(IDI_TAKE_SNAP)); m_SetIn.SetIcon(AfxGetApp()->LoadIcon(IDI_SET_IN)); m_SetOut.SetIcon(AfxGetApp()->LoadIcon(IDI_SET_OUT)); m_GotoStart.SetIcon(AfxGetApp()->LoadIcon(IDI_GOTO_START)); m_GotoEnd.SetIcon(AfxGetApp()->LoadIcon(IDI_GOTO_END)); m_Pos.SetRange(0, m_Movie.GetFrameCount() - 1); DragAcceptFiles(TRUE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
Sound::Sound(const Sound& copy) : SoundSource(copy), myBuffer (NULL) { if (copy.myBuffer) SetBuffer(*copy.myBuffer); SetLoop(copy.GetLoop()); }
Sound::Sound(const SoundBuffer& buffer, bool loop, float pitch, float volume, const Vector3f& position) : myBuffer(NULL) { SetBuffer(buffer); SetLoop(loop); SetPitch(pitch); SetVolume(volume); SetPosition(position); }
void Direction::UnserializeFrom(const gd::SerializerElement & element) { SetTimeBetweenFrames(element.GetDoubleAttribute("timeBetweenFrames", 1, "tempsEntre")); SetLoop(element.GetBoolAttribute("looping", false, "boucle")); const gd::SerializerElement & spritesElement = element.GetChild("sprites", 0, "Sprites"); spritesElement.ConsiderAsArrayOf("sprite", "Sprite"); for (unsigned int i = 0; i < spritesElement.GetChildrenCount(); ++i) { const gd::SerializerElement & spriteElement = spritesElement.GetChild(i); Sprite sprite; sprite.SetImageName(spriteElement.GetStringAttribute("image")); OpenPointsSprites(sprite.GetAllNonDefaultPoints(), spriteElement.GetChild("points", 0, "Points")); OpenPoint(sprite.GetOrigin(), spriteElement.GetChild("originPoint" , 0, "PointOrigine")); OpenPoint(sprite.GetCenter(), spriteElement.GetChild("centerPoint" , 0, "PointCentre")); sprite.SetDefaultCenterPoint(spriteElement.GetChild("centerPoint" , 0, "PointCentre").GetBoolAttribute("automatic", true)); if (spriteElement.HasChild("CustomCollisionMask")) sprite.SetCollisionMaskAutomatic(!spriteElement.GetChild("CustomCollisionMask").GetBoolAttribute("custom", false)); else sprite.SetCollisionMaskAutomatic(!spriteElement.GetBoolAttribute("hasCustomCollisionMask", false)); std::vector<Polygon2d> mask; const gd::SerializerElement & collisionMaskElement = spriteElement.GetChild("customCollisionMask", 0, "CustomCollisionMask"); collisionMaskElement.ConsiderAsArrayOf("polygon", "Polygon"); for (unsigned int j = 0; j < collisionMaskElement.GetChildrenCount(); ++j) { Polygon2d polygon; const gd::SerializerElement & polygonElement = collisionMaskElement.GetChild(j); polygonElement.ConsiderAsArrayOf("vertice", "Point"); for (unsigned int k = 0; k < polygonElement.GetChildrenCount(); ++k) { const gd::SerializerElement & verticeElement = polygonElement.GetChild(k); polygon.vertices.push_back(sf::Vector2f(verticeElement.GetDoubleAttribute("x"), verticeElement.GetDoubleAttribute("y"))); } mask.push_back(polygon); } sprite.SetCustomCollisionMask(mask); sprites.push_back(sprite); } };
void Sound::SetLooped(bool enable) { if (enable) SetLoop(0, dataSize_); else { if (!compressed_) { end_ = data_.Get() + dataSize_; looped_ = false; FixInterpolation(); } else looped_ = false; } }
void Sound::LoadParameters() { ResourceCache* cache = GetSubsystem<ResourceCache>(); String xmlName = ReplaceExtension(GetName(), ".xml"); if (!cache->Exists(xmlName)) return; XMLFile* file = cache->GetResource<XMLFile>(xmlName); if (!file) return; XMLElement rootElem = file->GetRoot(); XMLElement paramElem = rootElem.GetChild(); while (paramElem) { String name = paramElem.GetName(); if (name == "format" && !compressed_) { if (paramElem.HasAttribute("frequency")) frequency_ = paramElem.GetInt("frequency"); if (paramElem.HasAttribute("sixteenbit")) sixteenBit_ = paramElem.GetBool("sixteenbit"); if (paramElem.HasAttribute("16bit")) sixteenBit_ = paramElem.GetBool("16bit"); if (paramElem.HasAttribute("stereo")) stereo_ = paramElem.GetBool("stereo"); } if (name == "loop") { if (paramElem.HasAttribute("enable")) SetLooped(paramElem.GetBool("enable")); if (paramElem.HasAttribute("start") && paramElem.HasAttribute("end")) SetLoop(paramElem.GetInt("start"), paramElem.GetInt("end")); } paramElem = paramElem.GetNext(); } }
void Sound::LoadParameters() { auto* cache = GetSubsystem<ResourceCache>(); String xmlName = ReplaceExtension(GetName(), ".xml"); SharedPtr<XMLFile> file(cache->GetTempResource<XMLFile>(xmlName, false)); if (!file) return; XMLElement rootElem = file->GetRoot(); LoadMetadataFromXML(rootElem); for (XMLElement paramElem = rootElem.GetChild(); paramElem; paramElem = paramElem.GetNext()) { String name = paramElem.GetName(); if (name == "format" && !compressed_) { if (paramElem.HasAttribute("frequency")) frequency_ = (unsigned)paramElem.GetInt("frequency"); if (paramElem.HasAttribute("sixteenbit")) sixteenBit_ = paramElem.GetBool("sixteenbit"); if (paramElem.HasAttribute("16bit")) sixteenBit_ = paramElem.GetBool("16bit"); if (paramElem.HasAttribute("stereo")) stereo_ = paramElem.GetBool("stereo"); } if (name == "loop") { if (paramElem.HasAttribute("enable")) SetLooped(paramElem.GetBool("enable")); if (paramElem.HasAttribute("start") && paramElem.HasAttribute("end")) SetLoop((unsigned)paramElem.GetInt("start"), (unsigned)paramElem.GetInt("end")); } } }
void CMixereView::OnToggleLoop() { SetLoop(-1); }
/* ================== Sound::Loop ================== */ bool Sound::Loop() { SetLoop(true); return Play(); }
//////////////////////////////////////////////////////////// /// Set a music loop state //////////////////////////////////////////////////////////// void sfMusic_SetLoop(sfMusic* Music, sfBool Loop) { CSFML_CALL(Music, SetLoop(Loop != 0)); }