Example #1
0
        private void MMessageBus_ChangeAvatarRequestHandler(object sender, ChangeAvatarEvent e)
        {
            MBuildingBlock bb = MBuildParts.GetBlock(e.TemplateID);

            if (bb == null)
            {
                Console.WriteLine("MSpawnHandler: Missing Template:" + e.TemplateID);
                return;
            }

            MSceneObject mo = (MSceneObject)MScene.ModelRoot.FindModuleByInstanceID(e.UserID);

            if (mo != null)
            {
                MMessageBus.DeleteRequest(this, mo);
            }

            MServerObject m = new MServerObject();

            m.InstanceID = e.UserID;
            m.TemplateID = e.TemplateID;
            m.OwnerID    = e.UserID;
            m.TextureID  = bb.MaterialID;
            m.Name       = Globals.UserAccount.UserName;
            MScene.Camera.CameraOffset = MassiveTools.VectorFromArray(bb.BoneOffset);
            m.Position = Globals.UserAccount.CurrentPosition;
            m.Rotation = MassiveTools.ArrayFromQuaterniond(Globals.Avatar.GetRotation());
            Spawn(m);
        }
Example #2
0
        void Populate()
        {
            PartsView.Items.Clear();
            Dictionary <string, MBuildingBlock> Blocks = MBuildParts.GetBlocks();

            foreach (KeyValuePair <string, MBuildingBlock> kv in Blocks)
            {
                if (string.IsNullOrEmpty(kv.Value.Model))
                {
                    continue;
                }
                string       sIconPath = GetIconPathForModel(kv.Value.Model);
                ListViewItem lvi       = new ListViewItem(kv.Value.Name);
                lvi.Tag = kv.Value;
                if (!File.Exists(sIconPath))
                {
                    Console.WriteLine("BuildForm: File not found: " + sIconPath);
                }
                else
                {
                    Bitmap icon = new Bitmap(sIconPath);
                    imageList1.Images.Add(kv.Value.Name, icon);
                }

                lvi.ImageKey = kv.Value.Name;
                PartsView.Items.Add(lvi);
            }
        }
Example #3
0
        /// <summary>
        /// Prepares an object for inclusion in the scene graph
        /// If the template does not exist, it is created first
        /// </summary>
        /// <param name="m"></param>
        public void Spawn(MServerObject m)
        {
            MSceneObject mo = (MSceneObject)MScene.ModelRoot.FindModuleByInstanceID(m.InstanceID);

            if (mo != null)
            {
                return;       //if the object already exists, never mind
            }
            //check if the object template exists. All user objects must exist as a template first
            MSceneObject mt = (MSceneObject)MScene.TemplateRoot.FindModuleByName(m.TemplateID);

            if (mt == null)
            {
                LoadTemplate(m.TemplateID);
            }

            //if ((m.Name == Globals.UserAccount.UserID) && ( m.OwnerID == Globals.UserAccount.UserID)){
            mo = Helper.Spawn(m,
                              MassiveTools.VectorFromArray(m.Position),
                              MassiveTools.QuaternionFromArray(m.Rotation));
            if (mo == null)
            {
                Console.WriteLine("MSpawnHandler: Template not found:" + m.TemplateID);
            }
            else
            {
                mo.InstanceID = m.InstanceID;
                mo.SetRotation(MassiveTools.QuaternionFromArray(m.Rotation));

                //If the object spawning is our avatar
                if (mo.InstanceID == Globals.UserAccount.UserID)
                {
                    Globals.Avatar.SetSceneObject(mo);
                    MBuildingBlock bb = MBuildParts.GetBlock(mo.TemplateID);
                    MScene.Camera.CameraOffset = MassiveTools.VectorFromArray(bb.BoneOffset);
                    MMessageBus.AvatarChanged(this, Globals.UserAccount.UserID, mo.TemplateID);
                }

                SetMaterial(mo, m.TextureID);

                MMessageBus.Created(this, mo);
            }

            if (mo.OwnerID == Globals.UserAccount.UserID)
            {
                MMessageBus.Select(this, new SelectEvent(mo));
            }
        }
Example #4
0
        void CreateButtons()
        {
            Dictionary <string, MBuildingBlock> blocks = MBuildParts.GetBlocks();

            foreach (KeyValuePair <string, MBuildingBlock> k in blocks)
            {
                MBuildingBlock bb = k.Value;
                if (bb.Type != MBuildingBlock.MATERIAL_TYPE)
                {
                    continue;
                }
                string       sPath = Path.Combine(MFileSystem.AssetsPath, bb.Path);
                Bitmap       bmp   = new Bitmap(Path.GetFullPath(sPath));
                ListViewItem lvi   = new ListViewItem(bb.Name);
                imageList1.Images.Add(bb.TextureID, bmp);
                lvi.ImageKey = bb.TextureID;
                lvi.Tag      = bb.TextureID;
                TextureView.Items.Add(lvi);
            }
        }
Example #5
0
        public void Setup()
        {
            Globals.VERSION = MVersion.VERSION;

            MFileSystem.SetProjectPath(@".\");
            Globals._scene = new MScene(true);
            _spawnHandler  = new MSpawnHandler();
            _deleteHandler = new MDeleteHandler();

            _teleportHandler    = new MTeleportHandler();
            _textureHandler     = new MTextureHandler();
            _lightHandler       = new MLightHandler();
            _propertyHandler    = new MPropertyChangeHandler();
            _navPointer         = new MNavigationPointer();
            _bookmarkController = new BookmarkController();
            _moveHandler        = new MMoveHandler();
            _avatarHandler      = new MAvatarHandler();



            Globals._scene.SetupInitialObjects();
            _cameraHandler = new MCameraHandler();
            _buildParts    = new MBuildParts();
            _buildParts.Setup();

            _userDetails = new UserDetails();
            _userDetails.Setup();
            ParseCmdLine();

            //TODO: get from server


            Globals._scene.Setup();
            _navPointer.Setup();

            Globals._scene.Play();
            //Settings.DebugNetwork = true;
            CreateAvatar();
        }
Example #6
0
        public static MSceneObject LoadTemplate(string TemplateID)
        {
            MBuildingBlock bb = MBuildParts.GetBlock(TemplateID);

            if (bb == null)
            {
                Console.WriteLine("WARNING: MSpawnHandler.LoadTemplate " + TemplateID + " not found in blocks");
                return(null);
            }

            MSceneObject o = null;

            if (bb.Type == MBuildParts.MAnimatedModel)
            {
                o = Helper.CreateAnimatedModel(MScene.TemplateRoot, TemplateID, bb.Model, Vector3d.Zero);
                MAnimatedModel man = (MAnimatedModel)o;
                man.BoneOffset = MassiveTools.VectorFromArray(bb.BoneOffset);
            }

            if (bb.Type == MBuildParts.MModel)
            {
                o = Helper.CreateModel(MScene.TemplateRoot, TemplateID, bb.Model, Vector3d.Zero);
            }

            MMaterial mat = (MMaterial)MScene.MaterialRoot.FindModuleByName(bb.MaterialID);

            if (mat == null)
            {
                Console.WriteLine("MSpawnHandler.LoadTemplate " + bb.MaterialID + " was null");
            }
            o.SetMaterial(mat);

            Vector3d size = MassiveTools.VectorFromArray(bb.Size);

            MPhysicsObject.EShape shape = GetShape(bb.PhysicsShape);
            if (shape != MPhysicsObject.EShape.NULL)
            {
                MPhysicsObject mpo = new MPhysicsObject(o, TemplateID + "_physics", bb.Weight, shape,
                                                        true, size);
                mpo.SetSleep(5);
                mpo.SetFriction(0.5);
                if (shape != MPhysicsObject.EShape.Sphere)
                {
                    mpo.SetAngularFactor(0.0, 0.0, 0.0);
                    mpo.SetDamping(0.5, 0.5);
                    mpo.SetRestitution(0.5);
                }
                else
                {
                    mpo.SetDamping(0.1, 0.1);
                    mpo.SetRestitution(0.8);
                }
            }

            o.TemplateID               = TemplateID;
            o.InstanceID               = TemplateID;
            o.IsTransparent            = bb.IsTransparent;
            o.transform.RotationOffset = Quaterniond.FromEulerAngles(MassiveTools.VectorFromArray(bb.RotationOffset));
            o.Setup();

            AddSubmodules(bb, o);

            return(o);
        }