public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { List <ClientController> clients = new List <ClientController>(Server.ClientControllers); clients.RemoveAll(x => !x.Actualy); string id = (string)data.Values["id"].ObjectValue; Vector3K playerPos = client.CurrentPlayer.Object.Position; Vector3K playerRot = client.CurrentPlayer.Object.EulerAngles; Vector3K pos = new Vector3K(1.3F, -0.55F, 0).RotateVector2(playerRot.z); Vector3K rot = new Vector3K(0f, 0f, playerRot.z - 0.067F); pos.x += playerPos.x; pos.y += playerPos.y; BulletObject bullet = new BulletObject(pos, new Vector3K(0f, 0f, 0f), new Vector3K(0.28f, 0.09f, 0f), rot); client.MissionController.AddDynamicObject(ObjectFactory.GetObject(bullet)); NetDataRequest allResponse = new NetDataRequest(RequestTypes.Shoot, new Dictionary <string, ObjectWrapper>() { { "id", new ObjectWrapper <string>(id) } }); Server.SendResponse(clients, Utils.ToBytesJSON(allResponse), networkID); }
public void Update(float deltaTime) { if (!waveStarted) { if (spawnedSkeletons.Exists(x => ((x as IHuman) != null && (x as IHuman).IsLive))) { return; } waveWaitDown += deltaTime; if (waveWaitDown >= WAVE_WAIT) { WaveNumber++; waveStarted = true; waveWaitDown = 0f; } } else { waveDown += deltaTime; if (waveDown >= WaveDuration) { waveStarted = false; waveDown = 0f; } else { spawnDown += deltaTime; if (spawnDown >= SpawnInterval) { System.Random rnd = new System.Random(); int r = rnd.Next(0, 3); Vector3K position = new Vector3K(-15f, 15f, 0f); switch (r) { case 1: position = new Vector3K(15f, 15f, 0f); break; case 2: position = new Vector3K(15f, -15f, 0f); break; case 3: position = new Vector3K(-15f, -15f, 0f); break; } SkeletonObject skeleton = new SkeletonObject(position, new Vector3K(0f, 0f, 0f), new Vector3K(2f, 2f, 2f), new Vector3K(0f, 0f, 0f)); SkeletonObjectController skeletonController = ObjectFactory.GetObject(skeleton) as SkeletonObjectController; MissionController.AddDynamicObject(skeletonController); spawnedSkeletons.Add(skeletonController); spawnDown = 0f; } } } }
public static Vector3K RotateVector2(this Vector3K vector, float angle) { return(new Vector3K( vector.x * Mathf.Cos(angle * Mathf.Deg2Rad) - vector.y * Mathf.Sin(angle * Mathf.Deg2Rad), vector.x * Mathf.Sin(angle * Mathf.Deg2Rad) + vector.y * Mathf.Cos(angle * Mathf.Deg2Rad), 0 )); }
public BaseMissionObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles) { ID = Guid.NewGuid().ToString(); Position = position; Center = center; Size = size; EulerAngles = eulerAngles; }
public void SetTransformModel(BaseMissionObjectController model, Vector3K position, Vector3K eulerAngles) { model.Object.Position = position; model.Object.EulerAngles = eulerAngles; if (Math.Abs(model.Object.Position.x) > 1000 || Math.Abs(model.Object.Position.y) > 1000) { model.Destroy(); return; } }
public SkeletonObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles) : base(position, center, size, eulerAngles) { ID = Guid.NewGuid().ToString(); Position = position; Center = center; Size = size; EulerAngles = eulerAngles; CanBreaked = false; Name = "Skeleton"; NameID = "Skeleton"; }
public TestObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles) : base(position, center, size, eulerAngles) { ID = Guid.NewGuid().ToString(); Position = position; Center = center; Size = size; EulerAngles = eulerAngles; Name = "Test Object"; NameID = "TestObject"; IsStatic = true; }
public void SetTransform(Vector3K position, Vector3K eulerAngles) { Object.Position = position; Object.EulerAngles = eulerAngles; if (Mathf.Abs(Object.Position.x) > 1000 || Mathf.Abs(Object.Position.y) > 1000) { Destroy(); return; } if (body != null) { body.SetXForm(new Box2DX.Common.Vec2(position.x, position.y), Object.EulerAngles.z * Mathf.Deg2Rad); } }
public override void Update(float deltaTime) { CheckHealth(); List <BaseMissionObjectController> players = MissionController.DynamicObjects.Values.Where(x => x.GetType() == typeof(PlayerObjectController) && (x.Object as PlayerObject).IsLive).ToList(); PlayerObjectController targetPlayer = null; float distance = float.MaxValue; foreach (BaseMissionObjectController pl in players) { if (distance > Vector3K.Distance(pl.Object.Position, Object.Position)) { targetPlayer = pl as PlayerObjectController; distance = Vector3K.Distance(pl.Object.Position, Object.Position); } } if (targetPlayer == null) { return; } float dist = Vector3K.Distance(targetPlayer.Object.Position, Object.Position); if (dist > 2f) { if (dist > 4f) { hitTimeDown = 0f; } Object.EulerAngles.z = (float)(Mathf.Rad2Deg * (Math.Atan2(targetPlayer.Object.Position.y - Object.Position.y, targetPlayer.Object.Position.x - Object.Position.x))); Object.Position.x += Mathf.Cos(Object.EulerAngles.z * Mathf.Deg2Rad) * (Object as SkeletonObject).MoveSpeed * deltaTime; Object.Position.y += Mathf.Sin(Object.EulerAngles.z * Mathf.Deg2Rad) * (Object as SkeletonObject).MoveSpeed * deltaTime; body.SetXForm(new Box2DX.Common.Vec2(Object.Position.x, Object.Position.y), Object.EulerAngles.z * Mathf.Deg2Rad); } else { hitTimeDown -= deltaTime; CheckHit(targetPlayer); } }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { List <ClientController> clients = new List <ClientController>(Server.ClientControllers); clients.RemoveAll(x => !x.Actualy); string id = (string)data.Values["id"].ObjectValue; if (!client.MissionController.DynamicObjects.ContainsKey(id)) { return; } if (client.CurrentPlayer == null) { return; } Vector3K position = (Vector3K)data.Values["position"].ObjectValue; Vector3K eulerAngles = (Vector3K)data.Values["eulerAngles"].ObjectValue; client.CurrentPlayer.SetTransform(position, eulerAngles); }
public static Vector3 FromServerVector3(this Vector3K vector) { return(new Vector3(vector.x, vector.y, vector.z)); }