public void RocketOnCollisionEnter(RocketComponent rocketComponent, Collision collision) { if (OsFps.Instance.Server != null) { RocketSystem.Instance.ServerRocketOnCollisionEnter(OsFps.Instance.Server, rocketComponent, collision); } }
protected void InitializeNextRocket() { if (!CanFire) return; if (nextRocket != null) return; nextRocket = GameLevel.instance.CreateRocket(); nextRocket.transform.SetParent(rocketPoint, true); nextRocket.transform.SetLocalPosition2D(Vector2.zero); nextRocket.canLook = true; }
public void OnUpdate() { var rockets = CurrentEntityManager.Entities.Where(e => e.GetComponent <RocketComponent>()).ToArray(); int len = rockets.Length; for (int i = 0; i < len; i++) { RocketComponent rocketComponent = rockets[i].GetComponent <RocketComponent>(); // If rocket's target have been destroyed somehow - destroy rocket too if (rocketComponent.ClosestTarget != null) { Vector3 dir = (rockets[i].GetComponent <RocketComponent>().ClosestTarget.transform.position - rockets[i].transform.position).normalized; float distance = rockets[i].GetComponent <RocketComponent>().Speed *Time.deltaTime; Vector3 newPos = rockets[i].transform.position + dir * distance; // Rotate rocket in the direction to a target Vector3 up = rockets[i].transform.up; float rotateAngle = Vector3.SignedAngle(up, dir, new Vector3(0, 0, 1)); rockets[i].transform.Rotate(new Vector3(0, 0, 1), rotateAngle); // Check if rocket collide with target RaycastHit2D raycastHit = Physics2D.Raycast(rockets[i].transform.position, dir, distance); if (raycastHit.collider == null || !raycastHit.collider.GetComponent <TargetComponent>()) { rockets[i].transform.position = newPos; } else if (raycastHit.collider.GetComponent <TargetComponent>()) { CurrentEntityManager.DestroyEntity(raycastHit.collider.gameObject); CurrentEntityManager.DestroyEntity(rockets[i]); var scoreEntity = CurrentEntityManager.CreateEntity("scoreEntity", typeof(ScoreComponent)); scoreEntity.GetComponent <ScoreComponent>().Score = 1; } // If rocket is not visible by main camera if (!GeometryUtility.TestPlanesAABB(planes, rockets[i].GetComponent <SpriteRenderer>().bounds)) { CurrentEntityManager.DestroyEntity(rockets[i]); } } else { CurrentEntityManager.DestroyEntity(rockets[i]); } } }
public void FireRocket(Vector3 position) { if (!CanFire) return; InitializeNextRocket(); if (nextRocket == null) return; nextRocket.canFly = true; nextRocket.canLook = false; nextRocket.flyToPosition = position; nextRocket = null; ammo--; InitializeNextRocket(); }
protected void InitializeNextRocket() { if (!CanFire) { return; } if (nextRocket != null) { return; } nextRocket = GameLevel.instance.CreateRocket(); nextRocket.transform.SetParent(rocketPoint, true); nextRocket.transform.SetLocalPosition2D(Vector2.zero); nextRocket.canLook = true; }
public void SetComponent(RocketComponent comp) { component = comp; partLabel.text = component.name; measurementItems = new List <MeasurementItem>(component.measurementItems); rocketMat = comp.mat; graphicalListOfMeasurements = transform.Find("InfoStuffList"); foreach (MeasurementItem item in measurementItems) { Debug.Log("Setting item with ID " + item.id); MeasurementItemGraphical bl = new GameObject().AddComponent <MeasurementItemGraphical>(); bl.SetUpUI(item, graphicalListOfMeasurements); } }
public RocketLayout(Powder powder, Charge charge, params RocketComponent[] components) { this.powder = powder; this.charge = charge; for (int i = 0; i < components.Length; i++) { RocketComponent comp = components[i]; if (typeof(Powder) == comp.GetType()) { this.powder = (Powder)comp; } else { this.charge = (Charge)comp; } } }
public void FireRocket(Vector3 position) { if (!CanFire) { return; } InitializeNextRocket(); if (nextRocket == null) { return; } nextRocket.canFly = true; nextRocket.canLook = false; nextRocket.flyToPosition = position; nextRocket = null; ammo--; InitializeNextRocket(); }
private void ServerDetonateRocket(Server server, RocketComponent rocketComponent) { var rocketPosition = (float3)rocketComponent.transform.position; // apply damage & forces to players within range var rocketLauncherDefinition = WeaponSystem.Instance.GetWeaponDefinitionByType(WeaponType.RocketLauncher); WeaponSystem.Instance.ApplyExplosionDamageAndForces( server, rocketPosition, OsFps.RocketExplosionRadius, OsFps.RocketExplosionForce, rocketLauncherDefinition.DamagePerBullet, rocketComponent.State.ShooterPlayerId ); // destroy rocket object Object.Destroy(rocketComponent.gameObject); // send message server.ServerPeer.CallRpcOnAllClients("ClientOnDetonateRocket", server.ServerPeer.reliableChannelId, new { id = rocketComponent.State.Id, position = rocketPosition }); }
public void ServerRocketOnCollisionEnter(Server server, RocketComponent rocketComponent, Collision collision) { ServerDetonateRocket(server, rocketComponent); }