/* * 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; namespace OpenMetaverse { /// /// Main class to expose grid functionality to clients. All of the /// classes needed for sending and receiving data are accessible through /// this class. /// /// /// /// // Example minimum code required to instantiate class and /// // connect to a simulator. /// using System; /// using System.Collections.Generic; /// using System.Text; /// using OpenMetaverse; /// /// namespace FirstBot /// { /// class Bot /// { /// public static GridClient Client; /// static void Main(string[] args) /// { /// Client = new GridClient(); // instantiates the GridClient class /// // to the global Client object /// // Login to Simulator /// Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); /// // Wait for a Keypress /// Console.ReadLine(); /// // Logout of simulator /// Client.Network.Logout(); /// } /// } /// } /// /// public class GridClient { /// Networking subsystem public NetworkManager Network; /// Settings class including constant values and changeable /// parameters for everything public Settings Settings; /// Parcel (subdivided simulator lots) subsystem public ParcelManager Parcels; /// Our own avatars subsystem public AgentManager Self; /// Other avatars subsystem public AvatarManager Avatars; /// Estate subsystem public EstateTools Estate; /// Friends list subsystem public FriendsManager Friends; /// Grid (aka simulator group) subsystem public GridManager Grid; /// Object subsystem public ObjectManager Objects; /// Group subsystem public GroupManager Groups; /// Asset subsystem public AssetManager Assets; /// Appearance subsystem public AppearanceManager Appearance; /// Inventory subsystem public InventoryManager Inventory; /// Directory searches including classifieds, people, land /// sales, etc public DirectoryManager Directory; /// Handles land, wind, and cloud heightmaps public TerrainManager Terrain; /// Handles sound-related networking public SoundManager Sound; /// Throttling total bandwidth usage, or allocating bandwidth /// for specific data stream types public AgentThrottle Throttle; public Stats.UtilizationStatistics Stats; /// /// Default constructor /// public GridClient() { // Initialise SmartThreadPool when using mono if (Type.GetType("Mono.Runtime") != null) { WorkPool.Init(true); } // These are order-dependant Network = new NetworkManager(this); Settings = new Settings(this); Parcels = new ParcelManager(this); Self = new AgentManager(this); Avatars = new AvatarManager(this); Estate = new EstateTools(this); Friends = new FriendsManager(this); Grid = new GridManager(this); Objects = new ObjectManager(this); Groups = new GroupManager(this); Assets = new AssetManager(this); Appearance = new AppearanceManager(this); Inventory = new InventoryManager(this); Directory = new DirectoryManager(this); Terrain = new TerrainManager(this); Sound = new SoundManager(this); Throttle = new AgentThrottle(this); Stats = new OpenMetaverse.Stats.UtilizationStatistics(); } /// /// Return the full name of this instance /// /// Client avatars full name public override string ToString() { return Self.Name; } } }