public void PreviewContainer(NodeAddedEvent e, HangarNode hangar, HangarCameraNode hangarCamera, SingleNode <MandatoryAssetsFirstLoadingCompletedComponent> completedLoading, [JoinAll] ICollection <ContainerMarketItemNode> containers, [JoinAll] ICollection <ContainerItemPreviewNode> previewContainers)
 {
     if ((previewContainers.Count == 0) && (containers.Count > 0))
     {
         base.PreviewItem(containers.First <ContainerMarketItemNode>().Entity);
     }
 }
Exemple #2
0
        public void Init(NodeAddedEvent e, HangarCameraNode hangar)
        {
            this.SetupCameraFlightESM(hangar.Entity);
            HangarCameraFlightDataComponent hangarCameraFlightData = hangar.hangarCameraFlightData;

            base.NewEvent <HangarCameraArcToLinearFlightEvent>().Attach(hangar).ScheduleDelayed(hangarCameraFlightData.ArcFlightTime);
            base.NewEvent <HangarCameraStopFlightEvent>().Attach(hangar).ScheduleDelayed(hangarCameraFlightData.FlightTime);
        }
Exemple #3
0
        public void RotateToDestination(HangarCameraRotateToDestinationEvent e, HangarCameraNode hangar)
        {
            Quaternion middleCameraRotation;
            Quaternion originCameraRotation;
            HangarCameraFlightDataComponent hangarCameraFlightData = hangar.hangarCameraFlightData;
            float t = Mathf.Pow((UnityTime.time - hangar.hangarCameraFlightData.StartFlightTime) / hangarCameraFlightData.FlightTime, 0.3333333f);

            if (t < 0.5)
            {
                originCameraRotation = hangarCameraFlightData.OriginCameraRotation;
                middleCameraRotation = hangarCameraFlightData.MiddleCameraRotation;
                t *= 2f;
            }
            else
            {
                originCameraRotation = hangarCameraFlightData.MiddleCameraRotation;
                middleCameraRotation = hangarCameraFlightData.DestinationCameraRotation;
                t = (t - 0.5f) * 2f;
            }
            hangar.cameraRootTransform.Root.SetRotationSafe(Quaternion.Slerp(originCameraRotation, middleCameraRotation, t));
        }
        public void CalculateFlightToLocation(NodeAddedEvent e, HangarLocationScreenNode screen, [JoinAll] HangarCameraNode hangar, [JoinAll] ICollection <HangarLocationScreenNode> activeLocationScreen)
        {
            Transform transform;

            if ((activeLocationScreen.Count <= 1) && hangar.hangarLocations.Locations.TryGetValue(screen.hangarLocation.HangarLocation, out transform))
            {
                base.ScheduleEvent <HangarCameraStopFlightEvent>(hangar);
                HangarConfigComponent hangarConfig = hangar.hangarConfig;
                Vector3 position = hangar.cameraRootTransform.Root.position;
                Vector3 a        = hangar.hangarTankPosition.transform.position;
                a.y = position.y;
                Vector3 b = transform.position;
                b.y = position.y;
                Vector3 from = position - a;
                from.y = 0f;
                from.Normalize();
                Vector3 to = b - a;
                to.y = 0f;
                to.Normalize();
                float   num      = Vector3.Distance(a, position);
                float   num2     = Vector3.Angle(from, to) * 0.01745329f;
                Vector3 vector8  = Vector3.Cross(to, from);
                Vector3 vector9  = ((from + to) / 2f).normalized * (num / Mathf.Cos(num2 / 2f));
                float   num4     = 3.141593f - num2;
                float   num5     = (num * Mathf.Tan(num2 / 2f)) * num4;
                Vector3 vector10 = a + (to * num);
                float   num6     = Vector3.Distance(vector10, b);
                if (num5 > num6)
                {
                    num5 = 0f;
                }
                float      num7       = hangarConfig.FlightToLocationTime / (num5 + num6);
                Vector3    vector11   = Vector3.Cross((Vector3)(hangar.cameraRootTransform.Root.rotation * Vector3.forward), (Vector3)(transform.rotation * Vector3.forward));
                Quaternion quaternion = Quaternion.Slerp(hangar.cameraRootTransform.Root.rotation, transform.rotation, 0.5f);
                if ((MathUtil.Sign(vector8.y) > 0f) && (MathUtil.Sign(vector11.y) < 0f))
                {
                    quaternion = Quaternion.AngleAxis(180f, Vector3.up) * quaternion;
                }
                HangarCameraFlightDataComponent component = new HangarCameraFlightDataComponent {
                    FlightTime          = hangarConfig.FlightToLocationTime,
                    ArcFlightPivotPoint = vector9,
                    ArcFlightTime       = num5 * num7
                };
                if (num5 > 0f)
                {
                    component.ArcFlightAngleSpeed = ((num4 * 57.29578f) / component.ArcFlightTime) * MathUtil.Sign(vector8.y);
                }
                component.ArcToLinearPoint          = vector10;
                component.LinearFlightTime          = num6 * num7;
                component.OriginCameraRotation      = hangar.cameraRootTransform.Root.rotation;
                component.OriginCameraPosition      = hangar.cameraRootTransform.Root.position;
                component.MiddleCameraRotation      = quaternion;
                component.DestinationCameraPosition = transform.position;
                component.DestinationCameraRotation = transform.rotation;
                component.StartFlightTime           = UnityTime.time;
                if (hangar.Entity.HasComponent <HangarCameraFlightDataComponent>())
                {
                    hangar.Entity.RemoveComponent <HangarCameraFlightDataComponent>();
                }
                hangar.Entity.AddComponent(component);
                hangar.hangarCameraViewState.Esm.ChangeState <HangarCameraViewState.FlightToLocationState>();
            }
        }
Exemple #5
0
        private void StartFlightToTank(HangarCameraNode hangar)
        {
            base.ScheduleEvent <HangarCameraStopFlightEvent>(hangar);
            HangarConfigComponent hangarConfig = hangar.hangarConfig;
            Vector3 position = hangar.cameraRootTransform.Root.position;
            Vector3 a        = hangar.hangarTankPosition.transform.position;

            a.y = position.y;
            Vector3 vector3 = position - a;

            vector3.y = 0f;
            vector3.Normalize();
            Vector3 b = hangar.hangarCameraStartPosition.transform.position;

            b.y = position.y;
            float   num2    = Vector3.Distance(a, position);
            float   num3    = Mathf.Asin(hangarConfig.FlightToTankRadius / num2) * 2f;
            Vector3 vector5 = (Vector3)(Quaternion.Euler(0f, num3 * 57.29578f, 0f) * vector3);

            vector5.Normalize();
            Vector3 vector8 = ((vector3 + vector5) / 2f).normalized * (num2 / Mathf.Cos(num3 / 2f));

            vector8.y = position.y;
            float   num5     = 3.141593f + num3;
            float   num6     = (num2 * Mathf.Tan(num3 / 2f)) * num5;
            Vector3 vector9  = a + (vector5 * Vector3.Distance(a, b));
            Vector3 vector10 = a + (vector5 * num2);
            float   num7     = Vector3.Distance(vector10, vector9);

            if (num6 > num7)
            {
                num6 = 0f;
            }
            vector9.y = hangar.hangarCameraStartPosition.transform.position.y;
            float      num8        = hangarConfig.FlightToTankTime / (num6 + num7);
            Quaternion quaternion  = Quaternion.LookRotation(hangar.hangarTankPosition.transform.position - vector9, Vector3.up);
            Quaternion quaternion2 = Quaternion.Slerp(hangar.cameraRootTransform.Root.rotation, quaternion, 0.5f);
            HangarCameraFlightDataComponent component = new HangarCameraFlightDataComponent {
                FlightTime          = hangarConfig.FlightToTankTime,
                ArcFlightPivotPoint = vector8,
                ArcFlightTime       = num6 * num8
            };

            if (num6 > 0f)
            {
                component.ArcFlightAngleSpeed = (num5 * 57.29578f) / component.ArcFlightTime;
            }
            component.ArcToLinearPoint          = vector10;
            component.LinearFlightTime          = num7 * num8;
            component.OriginCameraRotation      = hangar.cameraRootTransform.Root.rotation;
            component.OriginCameraPosition      = hangar.cameraRootTransform.Root.position;
            component.MiddleCameraRotation      = quaternion2;
            component.DestinationCameraPosition = vector9;
            component.DestinationCameraRotation = quaternion;
            component.StartFlightTime           = UnityTime.time;
            if (hangar.Entity.HasComponent <HangarCameraFlightDataComponent>())
            {
                hangar.Entity.RemoveComponent <HangarCameraFlightDataComponent>();
            }
            hangar.Entity.AddComponent(component);
            hangar.hangarCameraViewState.Esm.ChangeState <HangarCameraViewState.FlightToTankState>();
        }
Exemple #6
0
 public void CalculateFlightToTank(ShowScreenEvent e, Node any, [Combine, JoinAll] HangarLocationScreenNode screen, [Combine, JoinAll] HangarCameraNode hangar)
 {
     this.StartFlightToTank(hangar);
 }
Exemple #7
0
 public void CalculateFlightToTank(NodeRemoveEvent e, HangarLocationScreenNode screen, [JoinAll] HangarCameraNode hangar, [JoinAll] Optional <NewHangarLocationScreenNode> newLocationScreen)
 {
     if (!newLocationScreen.IsPresent())
     {
         this.StartFlightToTank(hangar);
     }
 }
        public void OnGraffitiEquip(NodeAddedEvent e, GraffitiItemPreviewNode graffiti, ActiveGraffitiScreenNode activeGraffitiScreen, [JoinAll] HangarCameraNode hangarCameraNode)
        {
            DynamicDecalProjectorComponent component = (graffiti.resourceData.Data as GameObject).GetComponent <DynamicDecalProjectorComponent>();

            activeGraffitiScreen.graffitiPreview.SetPreview(component.Material.mainTexture);
            base.ScheduleEvent <HangarGraffitiBuildedEvent>(hangarCameraNode);
        }
 public void OnExitGraffitiScreen(NodeRemoveEvent e, ActiveGraffitiScreenNode activeGraffitiScreen, [JoinAll] HangarCameraNode hangarCameraNode)
 {
     base.ScheduleEvent <HangarGraffitiBuildedEvent>(hangarCameraNode);
 }
 public void OnMain(NodeAddedEvent e, SingleNode <MainScreenComponent> screen, HangarCameraNode camera)
 {
     camera.hangar.GetComponentInChildren <Camera>().GetComponent <CameraOffsetBehaviour>().SetOffset(0f);
 }
 public void DeleteHangarCamera(NodeRemoveEvent e, SingleNode <HangarComponent> h, [JoinSelf] HangarCameraNode hangar)
 {
     hangar.Entity.RemoveComponent <HangarCameraViewStateComponent>();
     hangar.Entity.RemoveComponent <HangarCameraStateComponent>();
     hangar.Entity.RemoveComponent <HangarCameraRotationStateComponent>();
     hangar.Entity.RemoveComponent <HangarCameraComponent>();
     hangar.Entity.RemoveComponent <CameraComponent>();
     hangar.Entity.RemoveComponent <CameraRootTransformComponent>();
 }
 public void UpdateSoundListenerInHangar(UpdateEvent evt, SoundListenerInLobbyNode soundListener, [JoinAll] HangarCameraNode node)
 {
     this.ApplyListenerTransformToCamera(soundListener.soundListener, node.cameraRootTransform.Root);
 }
Exemple #13
0
        public void StopRotateToDestination(NodeRemoveEvent e, HangarCameraNode hangar)
        {
            HangarCameraFlightDataComponent hangarCameraFlightData = hangar.hangarCameraFlightData;

            hangar.cameraRootTransform.Root.SetRotationSafe(hangarCameraFlightData.DestinationCameraRotation);
        }