/* Thor Server 2.0 Project - Codenamed "Stockholm" Copyright 2008 - 2009 Joe Hegarty This file is part of The Thor Server 2.0 Project - Codenamed "Stockholm". The Thor Server 2.0 Project - Codenamed "Stockholm" is free software: you can redistribute it and/or modify it under the terms of the Microsoft Public License The Thor Server Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Microsoft Public License for more details. You should have received a copy of the Microsoft Public License along with The Thor Server Project. If not, see http://www.opensource.org/licenses/ms-pl.html */ using System; using System.Collections.Generic; using System.Linq; using StockholmLibrary.Game.Flats; using StockholmLibrary.Game.Sessions; using StockholmLibrary.Game.Packets.Client; using StockholmLibrary.Game.Packets.Server; using StockholmLibrary.Net; using StockholmLibrary.Util; using StockholmLibrary.Data; namespace StockholmLibrary.Game.Entities.Components { //------------------------------------ public class ECPhysics : EntityComponentRoomChild { private IsometricPoint _position = new IsometricPoint(); private int _orientation = 0; private PhysicsObject _physicsObject = null; //********************************************** public IsometricPoint Position { get { return _position; } set { _position.Copy(value); } } //********************************************** public int Orientation { get { return _orientation; } set { _orientation = value; } } //********************************************** public PhysicsObject PhysicsObject { get { return _physicsObject; } } //********************************************** public override void FlatInitiailise(Flat flat) { } //********************************************** public override void FlatDeinitiailise(Flat flat) { } //********************************************** public override void UserInitiailise(Session userSession) { // User initialise only runs in ECPhysics if we're placing a CreatureUser ECRoomStartPosition startPosition = null; if(GetRoomEntity().GetEC(ref startPosition)) { _position.Copy(startPosition.Position); } } //********************************************** public void InitialiseLocation(IsometricPoint location, int orientation) { _position.Copy(location); _orientation = orientation; } //********************************************** public void RegisterWithFlatPhysics() { ECFlatPhysics flatPhysics = null; if (GetRoomEntity().GetEC(ref flatPhysics)) { flatPhysics.AddEntityToTile(GetParentEntity(), _position); } } //********************************************** public void InitialisePhysicsObject(int id) { StockholmDbDataContext db = Stockholm.Get().Database; var physicsQuery = from p in db.PhysicsObjects where p.PhysicsID == id select p; _physicsObject = physicsQuery.Single(); } //********************************************** public override void UserDeinitiailise(Session userSession) { } } }