/* * Copyright (c) 2006-2014, openmetaverse.org * All rights reserved. * * - Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - Neither the name of the openmetaverse.org nor the names * of its contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ using System; using OpenMetaverse; namespace OpenMetaverse.Assets { /// /// Base class for all Asset types /// public abstract class Asset { /// A byte array containing the raw asset data public byte[] AssetData; /// True if the asset it only stored on the server temporarily public bool Temporary; /// A unique ID private UUID _AssetID; /// The assets unique ID public UUID AssetID { get { return _AssetID; } internal set { _AssetID = value; } } /// /// The "type" of asset, Notecard, Animation, etc /// public abstract AssetType AssetType { get; } /// /// Construct a new Asset object /// public Asset() { } /// /// Construct a new Asset object /// /// A unique specific to this asset /// A byte array containing the raw asset data public Asset(UUID assetID, byte[] assetData) { _AssetID = assetID; AssetData = assetData; } /// /// Regenerates the AssetData byte array from the properties /// of the derived class. /// public abstract void Encode(); /// /// Decodes the AssetData, placing it in appropriate properties of the derived /// class. /// /// True if the asset decoding succeeded, otherwise false public abstract bool Decode(); } }