public CreateObjectRequestEvent(string sInTemplateID, string sTag = "", string sTextureID = "") { ServerObject = new MServerObject(); ServerObject.TemplateID = sInTemplateID; ServerObject.Tag = sTag; ServerObject.TextureID = sTextureID; }
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); }
public void AddObject(MServerObject mo) { // Insert some data using (var cmd = new NpgsqlCommand()) { cmd.Connection = Connection; cmd.CommandText = "INSERT INTO objects (name, data, geom) VALUES (@p, 'wwhat', ST_GeomFromText('POINT(18.060316 -33.432044 22.1)', 4326))"; cmd.Parameters.AddWithValue("p", "Hello world"); int Result = cmd.ExecuteNonQuery(); Console.WriteLine("Add:" + Result); } }
public MServerObject GetObject(string InstanceID) { MServerObject mso = new MServerObject(); //if (Objects.ContainsKey(InstanceID)) return Objects[InstanceID]; string sQuery = string.Format("SELECT 1 FROM `objects` WHERE `instanceid`='{0}'", InstanceID); DataTable dt = QueryReader(sQuery); DataRow row = dt.Rows[0]; mso.OwnerID = row.ItemArray[0].ToString(); return(mso); }
private void Network_SpawnHandler(object sender, Massive.Events.ObjectSpawnedEvent e) { DataTable dt = e.SpawnedObject; foreach (DataRow dr in dt.Rows) { MServerObject mso = MServerObject.UnpackFromDataRow(dt.Columns, dr); if (mso == null) { continue; } Spawn(mso); } }
public bool SetProperty(string UserID, string InstanceID, string PropertyTag) { if (Objects.ContainsKey(InstanceID)) { MServerObject m = Objects[InstanceID]; if (m.OwnerID.Equals(UserID)) { m.DateModified = DateTime.Now; m.Tag = PropertyTag; WriteToDisk(); return(true); } } return(false); }
public bool SetTexture(string UserID, string InstanceID, string TextureID) { if (Objects.ContainsKey(InstanceID)) { MServerObject m = Objects[InstanceID]; if (m.OwnerID.Equals(UserID)) { m.DateModified = DateTime.Now; m.TextureID = TextureID; WriteToDisk(); return(true); } } return(false); }
public bool RotateObject(string UserID, string InstanceID, double[] rot) { if (Objects.ContainsKey(InstanceID)) { MServerObject m = Objects[InstanceID]; if (m.OwnerID.Equals(UserID)) { m.DateModified = DateTime.Now; m.Rotation = rot; //WriteToDisk(); return(true); } } return(false); }
/// <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)); } }
void Add(MBuildingBlock bb) { LastBuild = bb; if (MStateMachine.ZoneLocked == true) { MMessageBus.Error(this, "Can't build here, zone is locked / other building nearby"); return; } Vector3d pos = Globals.Avatar.GetPosition(); if (bb.TemplateID.Equals(MBuildParts.FOUNDATION01)) { pos += Globals.Avatar.Forward() * 13 - Globals.Avatar.Up() * 1.0; } else { pos += Globals.Avatar.Forward() * 4 + Globals.Avatar.Up() * 3.0; } Quaterniond rot = Globals.LocalUpRotation(); if (SelectedItem != null) { rot = SelectedItem.transform.Rotation; //prevent smaller items getting lost in the foundation if (SelectedItem.TemplateID != MBuildParts.FOUNDATION01) { //pos = SelectedItem.transform.Position; } } if (Globals.Network.Connected == true) { Globals.Network.SpawnRequest(bb.TemplateID, "TEXTURE01", bb.TemplateID, bb.TemplateID, pos, rot); } else { MServerObject mso = new MServerObject(); mso.InstanceID = Helper.GUID(); mso.OwnerID = Globals.UserAccount.UserID; mso.TextureID = bb.TextureID; mso.TemplateID = bb.TemplateID; mso.Position = MassiveTools.ArrayFromVector(pos); mso.Rotation = MassiveTools.ArrayFromQuaterniond(rot); MMessageBus.CreateObjectRequest(this, mso); } }
//Add or update position of existing object public bool AddObject(MServerObject ms) { //MServerObject ms = new MServerObject(); if (!Objects.ContainsKey(ms.InstanceID)) { Objects.Add(ms.InstanceID, ms); WriteToDisk(); return(true); } else { MServerObject mo = Objects[ms.InstanceID]; mo.Position = ms.Position; mo.Rotation = ms.Rotation; WriteToDisk(); } return(false); }
public int RemoveObject(string id) { if (id == null) { return(0); } if (Objects.ContainsKey(id)) { MServerObject mo = Objects[id]; Objects.Remove(id); if (mo.StaticStorage == 1) { return(1); } else { return(0); } } return(0); }
public CreateObjectRequestEvent(MServerObject newObject) { ServerObject = newObject; }
/** * Creates a copy of an existing object from the TemplateRoot * */ public static MSceneObject Spawn(MServerObject mso, Vector3d Pos, Quaterniond Rot) { MSceneObject m = (MSceneObject)MScene.TemplateRoot.FindModuleByInstanceID(mso.TemplateID); if (m == null) { Console.WriteLine("TEMPLATE NOT LOADED INTO MScene.TemplateRoot:" + mso.TemplateID); return(null); } MSceneObject t = null; MObject TargetRoot = MScene.ModelRoot; if (m.IsTransparent) { TargetRoot = MScene.Priority2; } else { TargetRoot = MScene.Priority1; } if (m.Type == MObject.EType.PrimitiveCube) { t = CreateCube(TargetRoot, mso.Name, Pos); } if (m.Type == MObject.EType.PrimitiveSphere) { t = CreateSphere(TargetRoot, 2, mso.Name, Pos); } if (m.Type == MObject.EType.Model) { t = SpawnModel(TargetRoot, mso.TemplateID, mso.OwnerID, mso.Name, Pos); } if (m.Type == MObject.EType.AnimatedModel) { t = SpawnAnimatedModel(TargetRoot, mso.TemplateID, mso.OwnerID, mso.Name, Pos); //MAnimatedModel man = (MAnimatedModel)m; //man.BoneOffset = MassiveTools.VectorFromArray(t.BoneOffset); } if (m.Type == MObject.EType.InstanceMesh) { t = SpawnInstanced(TargetRoot, mso.TemplateID, mso.OwnerID, mso.Name, Pos); } t.transform.Position = Pos; t.transform.Rotation = Rot; m.CopyTo(t); t.OwnerID = mso.OwnerID; t.transform.Position = Pos; t.transform.Rotation = Rot; t.Tag = mso.Tag; MClickHandler ch = (MClickHandler)m.FindModuleByType(MObject.EType.ClickHandler); if (ch != null) { MClickHandler ch2 = new MClickHandler(); ch2.Clicked = ch.Clicked; ch2.RightClicked = ch.RightClicked; ch2.DoubleClicked = ch.DoubleClicked; t.Add(ch2); } return(t); }
//Create Objects offline. Does not persist to the Server public static void CreateObjectRequest(object sender, MServerObject mso) { CreateObjectRequestHandler?.Invoke(sender, new CreateObjectRequestEvent(mso)); }