//not needed?? ///<summary> ///constructor ///</summary> ///<param name="map"></param> ///<param name="doorData"></param> public Door(Map map, DoorData doorData) : base(new EntitySceneObject()) { _status = DoorStatus.Closed; _numTicksStayOpen = 600; //TODO: this should be a parameter Name = doorData.Name; _p1 = doorData.From; _p2 = doorData.To; _switchIds = new List<uint>(); foreach (string triggerName in doorData.TriggerList) { T2DSceneObject trigger = TorqueObjectDatabase.Instance.FindObject<T2DSceneObject>(triggerName); Assert.Fatal(trigger != null, "Door.Door: no trigger"); if (trigger != null) _switchIds.Add(trigger.ObjectId); } _toP2Norm = Vector2.Normalize(_p2 - _p1); _currentSize = _doorSize = Vector2.Distance(_p2, _p1); Vector2 perp = Vector2Util.Perp(_toP2Norm); //create the walls that make up the door's geometry _wall1 = map.AddWall(_p1 + perp, _p2 + perp); _wall2 = map.AddWall(_p2 - perp, _p1 - perp); }
///<summary> ///initialize using associated entity ///</summary> ///<param name="entity">associated entity</param> public void Initialize(Entity entity) { _wall = entity as Wall; SimpleMaterial simpleMaterial = new SimpleMaterial(); simpleMaterial.TextureFilename = @"data\images\Mindcrafters\crate"; simpleMaterial.IsTranslucent = true; simpleMaterial.IsColorBlended = true; Material = simpleMaterial; Layer = 30; IsTemplate = false; Size = new Vector2(8, 8); }
///<summary> ///Add a wall at given position ///</summary> ///<param name="from"></param> ///<param name="to"></param> ///<returns></returns> public Wall AddWall(Vector2 from, Vector2 to) { Wall wall = new Wall(from, to); Walls.Add(wall); //register the entity EntityManager.Instance.RegisterEntity(wall); return wall; }
///<summary> ///Add a wall using given wall data ///</summary> ///<param name="wallData"></param> public void AddWall(WallData wallData) { Wall wall = new Wall(wallData); Walls.Add(wall); //register the entity EntityManager.Instance.RegisterEntity(wall); }