예제 #1
0
        private void setupEntityProcessors()
        {
            var player          = findEntity("player");
            var playerComponent = player.getComponent <PlayerComponent>();

            var mapSize = new Vector2(_tiledMap.widthInPixels, _tiledMap.heightInPixels);

            _camera = new CameraSystem(player)
            {
                mapLockEnabled = true,
                mapSize        = mapSize,
                followLerp     = 0.08f,
                deadzoneSize   = new Vector2(20, 10)
            };
            addEntityProcessor(_camera);

            var battleSystem = (BattleSystem)addEntityProcessor(new BattleSystem(playerComponent));

            battleSystem.BulletEffectTexture = content.Load <Texture2D>(Content.Effects.bullet_effects);
            addEntityProcessor(new ProjectilesSystem(player));
            addEntityProcessor(new BattleAreasSystem(player, _hudEntity.getComponent <MapHudComponent>()));

            addEntityProcessor(new TransferSystem(new Matcher().all(typeof(TransferComponent)), player));
            addEntityProcessor(new NpcInteractionSystem(playerComponent));
            addEntityProcessor(new HostagesSystem(playerComponent));
        }
예제 #2
0
        public RealtimeWorld(GameWindow window,
                             IAudioAdapter audioAdapter,
                             IGraphicsHost graphicsHost)
        {
            var graphics = graphicsHost.GetGraphicsAdapter();

            var audioSystem     = new AudioSystem(this, audioAdapter);
            var cameraSystem    = new CameraSystem(this, graphicsHost);
            var actorSystem     = new ActorSystem(this);
            var animationSystem = new AnimationSystem(this);

            // new up systems, order here will be order of update
            Systems.Add(new OpenTKInputSystem(this, window));
            Systems.Add(new BspSystem(this));
            Systems.Add(new PhysxPhysicsSystem(this));
            Systems.Add(new MoverSystem(this));
            Systems.Add(cameraSystem);
            Systems.Add(audioSystem);
            Systems.Add(actorSystem);
            Systems.Add(animationSystem);
            Systems.Add(new ScriptSystem(this, audioSystem, cameraSystem, actorSystem, animationSystem));
            Systems.Add(new RenderCollectorSystem(this, graphics));

            RenderSystems.Add(new RenderPipelineSystem(this, graphics));

            globalResources.Add(new RenderListStore());
            globalResources.Add(new InputStore());
        }
예제 #3
0
        public virtual void UpdateBeforeSimulation()
        {
            ProfilerShort.Begin("Thrusters and gyro");
            ThrustSystem.UpdateBeforeSimulation();
            GyroSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT)
            {
                ProfilerShort.Begin("Wheels");
                WheelSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }

            ProfilerShort.Begin("Conveyors");
            ConveyorSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            ProfilerShort.Begin("Control");
            ControlSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            ProfilerShort.Begin("Cameras");
            CameraSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            if (MySession.Static.Settings.EnableOxygen)
            {
                ProfilerShort.Begin("Oxygen");
                OxygenSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }
        }
예제 #4
0
        public ILevel Update(GameTime gameTime, Camera camera, ref GameSettings gameSettings, KeyboardState currentKey, KeyboardState prevKey, MouseState currentMouse, MouseState prevMouse)
        {
            #region Debug
            #endregion

            // Camera Updates
            CameraSystem.ControlCamera(currentKey, prevKey, camera, gameTime);
            CameraSystem.PanCamera(camera, gameTime);

            // Entity Movement Updates
            MovementSystem.InputMovement(currentKey, prevKey, gameTime, this._player.PositionInfo, this._player.MovementInfo);
            this._creatures.ForEach(c =>
            {
                switch (c.MovementInfo.MovementType)
                {
                case MovementType.AI:
                    //AI Movement System Call
                    break;

                case MovementType.INPUT:
                    MovementSystem.InputMovement(currentKey, prevKey, gameTime, c.PositionInfo, c.MovementInfo);
                    break;
                }
            });

            // Entity Information Updates

            // Set up for next frame
            CameraSystem.UpdateCameraTarget(this._player, this._creatures, camera);

            return(this);
        }
예제 #5
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            GameEntityFactory.GraphicsDevice = GraphicsDevice;

            frameCounterSystem = new FrameCounterSystem(true, this.Window);
            modelRenderSystem  = new ModelRenderSystem();
            modelRenderSystem.graphicsDevice = GraphicsDevice;
            playerInputSystem        = new PlayerInputSystem();
            cameraSystem             = new CameraSystem();
            uiSystem                 = new UIRenderSystem();
            collisionHandlingSystem  = new CollisionHandlingSystem();
            aiSystem                 = new AiSystem();
            collisionDetectionSystem = new CollisionDetectionSystem(false);
            frictionSystem           = new FrictionSystem();
            gravitySystem            = new GravitySystem();
            transformSystem          = new TransformSystem();


            SystemManager.Instance.AddToUpdateables(
                cameraSystem,
                collisionDetectionSystem,
                transformSystem,
                gravitySystem,
                frictionSystem,
                playerInputSystem,
                collisionHandlingSystem,
                aiSystem,
                frameCounterSystem
                );

            SystemManager.Instance.AddToDrawables(modelRenderSystem, frameCounterSystem, uiSystem);

            base.Initialize();
        }
예제 #6
0
        /// <summary>
        /// Initializes the <see cref="Komodo.Core.Engine.Graphics.GraphicsManager"/> and all <see cref="Komodo.Core.ECS.Systems.ISystem"/> objects.
        /// </summary>
        public void Initialize()
        {
            GraphicsManager.Initialize();
            DefaultSpriteShader = new BasicEffect(GraphicsManager.GraphicsDeviceManager.GraphicsDevice)
            {
                TextureEnabled     = true,
                VertexColorEnabled = true,
            };
            GraphicsManager.VSync = false;

            CameraSystem.Initialize();
            SoundSystem.Initialize();

            var physicsSystems = PhysicsSystems.ToArray();

            foreach (var system in physicsSystems)
            {
                system.Initialize();
            }
            var render3DSystems = Render3DSystems.ToArray();

            foreach (var system in render3DSystems)
            {
                system.Initialize();
            }
            var render2DSystems = Render2DSystems.ToArray();

            foreach (var system in render2DSystems)
            {
                system.Initialize();
            }

            BehaviorSystem.Initialize();
        }
예제 #7
0
 public LimitToCameraFrustum(BasePlayer player, float detectionOffset)
 {
     cameraSystem         = CameraManager.CameraReference;
     this.player          = player;
     this.detectionOffset = detectionOffset;
     cam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Camera>();
 }
예제 #8
0
 public static void InitViewportControl(DragReceiver drag_)
 {
     _drag = drag_;
     _drag.WhenDragBegin = d => {
         _focusOverride             = _dragFocusOverride;
         _dragInertiaValue          = 0;
         CameraSystem.WorldPosition = MainCamera.transform.position;
     };
     _drag.WhenDrag = (d, offset, pos) => {
         var targetX = CameraSystem.X + offset.x * UnitPerPixel;
         var targetY = CameraSystem.Y + offset.y * UnitPerPixel;
         if (PositionLimit != null)
         {
             (targetX, targetY) = PositionLimit.Limit(targetX, targetY);
         }
         MainCamera.transform.position = CameraSystem.SystemToWorld(
             targetX,
             targetY,
             CameraSystem.Z);
         OnDrag.Invoke(offset, new Vector3(targetX, targetY, CameraSystem.Z));
     };
     _drag.WhenDragEnd = (d, delta) => {
         _focusOverride             = false;
         _dragInertiaValue          = delta.magnitude;
         _dragInertiaDelta          = delta / _dragInertiaValue;
         CameraSystem.WorldPosition = MainCamera.transform.position;
     };
     _drag.WhenPinch = (d, start, distance) => {
         var diff = (distance - start) * zoomSetting.dragFactor * zoomSetting.range * _screenHeightInverse;
         TargetZoom(_zoomTarget - diff);
     };
     ViewportControl(true);
 }
        public void UpdateBeforeSimulation()
        {
            ProfilerShort.Begin("Thrusters");
            MyEntityThrustComponent thrustComp;

            if (CubeGrid.Components.TryGet(out thrustComp))
            {
                thrustComp.UpdateBeforeSimulation(false, Sync.IsServer || CubeGrid.GridSystems.ControlSystem.IsLocallyControlled);
            }
            ProfilerShort.End();

            // Only update gyros if there are gyros in the system
            if (GyroSystem.GyroCount > 0)
            {
                ProfilerShort.Begin("Gyros");
                GyroSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }

            if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT)
            {
                ProfilerShort.Begin("Wheels");
                WheelSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }

            /*ProfilerShort.Begin("Conveyors");
             * ConveyorSystem.UpdateBeforeSimulation();
             * ProfilerShort.End();*/

            ProfilerShort.Begin("Control");
            ControlSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            ProfilerShort.Begin("Cameras");
            CameraSystem.UpdateBeforeSimulation();
            ProfilerShort.End();

            if (MySession.Static.Settings.EnableOxygen && MySession.Static.Settings.EnableOxygenPressurization)
            {
                ProfilerShort.Begin("Oxygen");
                GasSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }

            if (MyPerGameSettings.EnableJumpDrive)
            {
                ProfilerShort.Begin("Jump");
                JumpSystem.UpdateBeforeSimulation();
                ProfilerShort.End();
            }

            ProfilerShort.Begin("Ship sounds");
            if (ShipSoundComponent != null)
            {
                ShipSoundComponent.Update();
            }
            ProfilerShort.End();
        }
예제 #10
0
 private void OnStartMakingDrink()
 {
     if (!usingBar)
     {
         playerState.PlayerStatus = PlayerStatus.Bar;
         CameraSystem.GetCameraSystem().SetCameraMode(CameraSystem.CameraMode.Bar);
         usingBar = true;
     }
 }
예제 #11
0
 public Game1()
 {
     graphics = new GraphicsDeviceManager(this);
     Content.RootDirectory = "Content";
     cameraSystem          = new CameraSystem();
     transformSystem       = new TransformSystem();
     modelSystem           = new ModelSystem();
     heightmapSystem       = new HeightmapSystem();
 }
예제 #12
0
 void Start()
 {
     // get door pieces by name
     numberOfDoorPieces = gameObject.transform.childCount;
     interval           = animationTime / numberOfDoorPieces;
     audioData          = GetComponent <AudioSource>();
     intervalCount      = interval;
     cameraInstance     = Camera.main.gameObject.GetComponent <CameraSystem>();
 }
예제 #13
0
 public static void NullReferences()
 {
     _gm              = null;
     _uiManager       = null;
     _inputController = null;
     _spawnerManager  = null;
     _cameraSystem    = null;
     _cutsceneManager = null;
 }
예제 #14
0
 /// <summary>
 /// Allows the game to perform any initialization it needs to before starting to run.
 /// This is where it can query for any required services and load any non-graphic
 /// related content.  Calling base.Initialize will enumerate through any components
 /// and initialize them as well.
 /// </summary>
 protected override void Initialize()
 {
     // TODO: Add your initialization logic here
     cameraSystem    = new CameraSystem();
     transformSystem = new TransformSystem();
     modelSystem     = new ModelSystem();
     heightmapSystem = new HeightmapSystem();
     base.Initialize();
 }
예제 #15
0
    /// <summary>
    /// Gets the camera component of the camera system.
    /// </summary>
    private void FetchCamerSystem()
    {
        CameraSystem camSys = CameraManager.CameraReference;

        if (camSys != null)
        {
            cam = camSys.Cam;
        }
    }
        private void OnTriggerExit2D(Collider2D other)
        {
            Player player = other.GetComponent <Player>();

            if (player != null && !player.IsDead)
            {
                CameraSystem cameraSystem = _camera.GetComponent <CameraSystem>();
                cameraSystem.ResetCamera();
            }
        }
예제 #17
0
        public override void Initialize()
        {
            Debug.WriteLine("[Game] TestScene.Initialize()");

            _cameraSystem = new CameraSystem(Game);
            _player       = new Player(Game, new Vector2(50, 50), new Vector2(16, 24));
            _player.Initialize();
            Game.Components.Add(_player);

            base.Initialize();
        }
예제 #18
0
 private void SystemInitialize()
 {
     AudioSystemControl       = new AudioSystem(music, sounds, audioSource);
     MouseSystemControl       = new MouseSystem(cursors);
     InputSystemControl       = new InputSystem();
     SlingSystemControl       = new SlingSystem();
     CameraSystemControl      = new CameraSystem();
     BirdControlSystemControl = new BirdControlSystem();
     ScoreSystemControl       = new ScoreSystem();
     JudgeSystemControl       = new JudgeSystem();
 }
예제 #19
0
    public void Init()
    {
        mStageSystem  = new StageSystem();
        mTankSystem   = new TankSystem();
        mBulletSystem = new BulletSystem();
        mCameraSystem = new CameraSystem();

        mStageSystem.Init();
        mTankSystem.Init();
        mBulletSystem.Init();
        mCameraSystem.Init();
    }
예제 #20
0
    private void Start()
    {
        cameraSystem = FindObjectOfType <CameraSystem>();

        state           = State.DISABLE;
        imageLightPanel = btnLightPanel.GetComponent <Image>();


        // 슬롯 패널의 이미지 컴포넌트 참조 취득
        // 슬롯 오브젝트가 자신의 슬롯이미지 오브젝트를 보여질 버튼UI 이미지 컴포넌트에 링크
        // ex) 액티브 0번 버튼 UI의 이미지 = 액티브 0번슬롯 오브젝트의 슬롯이미지
    }
예제 #21
0
 void Start()
 {
     _cameraSystem = GetComponent <CameraSystem>();
     if (_cameraSystem == null)
     {
         Debug.LogWarning("No CameraSystem on object with CameraParticleEffectManager : " + gameObject.name);
     }
     else
     {
         _cameraSystem.CameraStateChanged += ChangeState;
     }
 }
예제 #22
0
 public override void OnInspectorGUI()
 {
     _c_s = target as CameraSystem;
     if (_c_s._Mode == CameraSystem.Mode.Disable)
     {
         if (GUILayout.Button("啟用編輯"))
         {
             _c_s._Mode = CameraSystem.Mode.Enable;
         }
         return;
     }
     if (_c_s._Mode == CameraSystem.Mode.Enable)
     {
         if (GUILayout.Button("關閉編輯"))
         {
             _c_s._Mode = CameraSystem.Mode.Disable;
             return;
         }
         _c_s._SwitchButtonText = EditorGUILayout.ObjectField("顯示切換按鈕文字控制", _c_s._SwitchButtonText, typeof(Text), true) as Text;
         _c_s._LeftButton       = EditorGUILayout.ObjectField("左按鈕控制", _c_s._LeftButton, typeof(Button), true) as Button;
         _c_s._RightButton      = EditorGUILayout.ObjectField("右按鈕控制", _c_s._RightButton, typeof(Button), true) as Button;
         _c_s._SpectatorsName   = EditorGUILayout.ObjectField("被觀戰者控制", _c_s._SpectatorsName, typeof(Text), true) as Text;
         _c_s._CameraMode       = (CameraSystem.CameraMode)EditorGUILayout.EnumPopup("攝影機模式", _c_s._CameraMode);
         if (_c_s._CameraMode == CameraSystem.CameraMode.Local)
         {
             CameraSystem._LocalPlayer = EditorGUILayout.ObjectField("本地玩家", CameraSystem._LocalPlayer, typeof(Transform), true) as Transform;
             _c_s._Pivot       = EditorGUILayout.ObjectField("攝影機樞紐校正物件", _c_s._Pivot, typeof(Transform), true) as Transform;
             _c_s._Y_Offset    = EditorGUILayout.FloatField("偏移高度數值", _c_s._Y_Offset);
             _c_s._Distance    = EditorGUILayout.FloatField("距離於目標物數值", _c_s._Distance);
             _c_s._SmoothSpeed = EditorGUILayout.FloatField("平滑速率", _c_s._SmoothSpeed);
             return;
         }
         if (_c_s._CameraMode == CameraSystem.CameraMode.Spectator)
         {
             _c_s._FixedTouchField = EditorGUILayout.ObjectField("觸控系統", _c_s._FixedTouchField, typeof(FixedTouchField), true) as FixedTouchField;
             serializedObject.Update();
             EditorGUILayout.PropertyField(_SpectatorPlayerList, new GUIContent("觀察總玩家列表"), true);
             serializedObject.ApplyModifiedProperties();
             _c_s._Y_SpectatorOffset    = EditorGUILayout.FloatField("偏移高度數值", _c_s._Y_SpectatorOffset);
             _c_s._SpectatorSmoothSpeed = EditorGUILayout.FloatField("平滑速率", _c_s._SpectatorSmoothSpeed);
             _c_s._CameraAngleSpeed     = EditorGUILayout.FloatField("左右觸控靈敏度", _c_s._CameraAngleSpeed);
             _c_s._CameraPosSpeed       = EditorGUILayout.FloatField("上下觸控靈敏度", _c_s._CameraPosSpeed);
             return;
         }
         if (_c_s._CameraMode == CameraSystem.CameraMode.Scene)
         {
             serializedObject.Update();
             EditorGUILayout.PropertyField(_SceneCameraList, new GUIContent("場景總攝影機列表"), true);
             serializedObject.ApplyModifiedProperties();
             _c_s._SceneCameraSmoothSpeed = EditorGUILayout.FloatField("平滑速率", _c_s._SceneCameraSmoothSpeed);
         }
     }
 }
예제 #23
0
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            CameraSystem.Move(-1, 0);

            EntityUpdater.Update(gameTime);

            base.Update(gameTime);
        }
        public void OnTriggerEnter2D(Collider2D other)
        {
            Player player = other.GetComponent <Player>();

            if (player != null)
            {
                Collider2D   localCollider2D = gameObject.GetComponent <Collider2D>();
                CameraSystem cameraSystem    = _camera.GetComponent <CameraSystem>();

                cameraSystem.MinVector = localCollider2D.bounds.min;
                cameraSystem.MaxVector = localCollider2D.bounds.max;
            }
        }
    private void Awake()
    {
        if (!instance)
        {
            instance = this;
        }
        basePosition = transform.localPosition;

        timeID  = Shader.PropertyToID("_Timer");
        speedID = Shader.PropertyToID("_Speed");
        sizeID  = Shader.PropertyToID("_Size");
        ResetShockwave();
    }
예제 #26
0
    public override void OnInspectorGUI()
    {
        //インスタンス化
        CameraSystem Edit = target as CameraSystem;

        EditorGUILayout.LabelField("カメラ追従させるターゲット");
        Edit.Target = (GameObject)EditorGUILayout.ObjectField("Target", Edit.Target, typeof(Object), true);

        EditorGUILayout.Space();

        EditorGUILayout.LabelField("カメラの移動速度");
        Edit.C_LerpSpeed = EditorGUILayout.IntSlider("0~10", Edit.C_LerpSpeed, 0, 10);
    }
    void OnDestroy()
    {
        this._player.Shutdown();
        this._cameraSystem.Shutdown();
        this._obstaclelSystem.Shutdown();
        this._player          = null;
        this._cameraSystem    = null;
        this._obstaclelSystem = null;

        UGame.EventManager.StopListening(EventNames.PAUSE_GAME, PauseGame);
        UGame.EventManager.StopListening(EventNames.RESUME_GAME, ResumeGame);
        UGame.EventManager.StopListening(EventNames.PLAYER_PASS_OBSTACLE, PlayerPassObstacle);
        UGame.EventManager.StopListening(EventNames.GMAE_OVER, GameOver);
    }
예제 #28
0
 public void Start()
 {
     TeleportCharacter = GameObject.FindGameObjectWithTag("Player");
     if (TeleportCharacter)
     {
         characterMover = TeleportCharacter.GetComponent <CharacterMover>();
         if (Destination) // 목적지 없는 경우는 대체 왜있는거지?
         {
             DesTransform = Destination.GetComponent <Transform>();
         }
         cameraSystem      = GameObject.FindObjectOfType <CameraSystem>();
         characterAnimator = TeleportCharacter.GetComponent <Animator>();
     }
 }
예제 #29
0
        /// <summary>
        /// Updates <see cref="Komodo.Core.ECS.Systems.ISystem"/> objects.
        /// </summary>
        /// <param name="gameTime">Time passed since last <see cref="Update(GameTime)"/>.</param>
        public void Update(GameTime gameTime)
        {
            InputManager.Update();

            BehaviorSystem.PreUpdate(gameTime);
            CameraSystem.PreUpdate(gameTime);
            SoundSystem.PreUpdate(gameTime);
            var physicsSystems = PhysicsSystems.ToArray();

            foreach (var system in physicsSystems)
            {
                system.PreUpdate(gameTime);
            }
            var render3DSystems = Render3DSystems.ToArray();

            foreach (var system in render3DSystems)
            {
                system.PreUpdate(gameTime);
            }
            var render2DSystems = Render2DSystems.ToArray();

            foreach (var system in render2DSystems)
            {
                system.PreUpdate(gameTime);
            }

            BehaviorSystem.UpdateComponents(gameTime);
            CameraSystem.UpdateComponents(gameTime);
            SoundSystem.UpdateComponents(gameTime);
            foreach (var system in physicsSystems)
            {
                system.UpdateComponents(gameTime);
            }

            BehaviorSystem.PostUpdate(gameTime);
            CameraSystem.PostUpdate(gameTime);
            SoundSystem.PostUpdate(gameTime);
            foreach (var system in physicsSystems)
            {
                system.PostUpdate(gameTime);
            }
            foreach (var system in render3DSystems)
            {
                system.PostUpdate(gameTime);
            }
            foreach (var system in render2DSystems)
            {
                system.PostUpdate(gameTime);
            }
        }
예제 #30
0
 public ScriptEngine(Scene scene,
                     IScriptExecutor executionOrchestrator,
                     AudioSystem audioSystem,
                     CameraSystem cameraSystem,
                     ActorSystem actorSystem,
                     AnimationSystem animationSystem)
 {
     this.scene = scene;
     this.executionOrchestrator = executionOrchestrator;
     this.audioSystem           = audioSystem;
     this.cameraSystem          = cameraSystem;
     this.actorSystem           = actorSystem;
     this.animationSystem       = animationSystem;
     this.rng = new Random(42);
 }
예제 #31
0
 void Start()
 {
     cameraSystem = GameObject.Find("MainCamera").GetComponent<CameraSystem>();
     controller = new Controller();
     existPlamFlag = false;
 }