示例#1
0
        public GameObject Instantiate(GameObjectQuerySystem goqs)
        {
            Dictionary <ulong, GameObject> prefabIDToGO = new Dictionary <ulong, GameObject>();

            foreach (SerializedGameObject sgo in GameObjects)
            {
                GameObject go = new GameObject(sgo.Name);
                go.Transform.LocalPosition = sgo.Transform.LocalPosition;
                go.Transform.LocalRotation = sgo.Transform.LocalRotation;
                go.Transform.LocalScale    = sgo.Transform.LocalScale;

                foreach (var component in sgo.Components)
                {
                    go.AddComponent(component);
                }

                prefabIDToGO.Add(sgo.ID, go);
            }

            foreach (SerializedGameObject sgo in GameObjects)
            {
                GameObject go = prefabIDToGO[sgo.ID];
                ulong      parentOriginalID = sgo.Transform.ParentID;
                if (parentOriginalID != 0)
                {
                    go.Transform.Parent = prefabIDToGO[parentOriginalID].Transform;
                }
            }

            return(prefabIDToGO[GameObjects.First().ID]);
        }
 protected override void Start(SystemRegistry registry)
 {
     _levelLoadTrigger = GameObject.GetComponent <LevelLoadTrigger>();
     _levelLoadTrigger.LevelLoadTriggered += OnLevelLoadTriggered;
     _goqs = registry.GetSystem <GameObjectQuerySystem>();
     _sls  = registry.GetSystem <SceneLoaderSystem>();
 }
示例#3
0
        protected override void Start(SystemRegistry registry)
        {
            _input   = registry.GetSystem <InputSystem>();
            _goqs    = registry.GetSystem <GameObjectQuerySystem>();
            _gs      = registry.GetSystem <GraphicsSystem>();
            _physics = registry.GetSystem <PhysicsSystem>();
            _ball    = _goqs.FindByName(BallName);
            if (_ball == null)
            {
                throw new InvalidOperationException("No Ball found in scene with name " + BallName);
            }

            _ballCollider = _ball.GetComponent <Collider>();
            _ballState    = _ball.GetComponent <BallState>();
        }
示例#4
0
 protected override void Attached(SystemRegistry registry)
 {
     _collider = GameObject.GetComponent <Collider>();
     _goqs     = registry.GetSystem <GameObjectQuerySystem>();
 }
 protected override void Attached(SystemRegistry registry)
 {
     _goqs = registry.GetSystem <GameObjectQuerySystem>();
 }
示例#6
0
 public PrefabAssetHandler(GameObjectQuerySystem goqs, EditorSystem es)
 {
     _goqs = goqs;
     _es   = es;
 }
示例#7
0
        protected override void Start(SystemRegistry registry)
        {
            if (SkipCinematicCamera)
            {
                SkipCinematicCamera = false;
                Enabled             = false;
                GameObject.RemoveComponent(this);
                return;
            }

            _input = registry.GetSystem <InputSystem>();
            GameObjectQuerySystem goqs = registry.GetSystem <GameObjectQuerySystem>();

            if (ExtraDisabledGameObjectNames != null)
            {
                _extraDisabledGameObjects = ExtraDisabledGameObjectNames.Select(name => goqs.FindByName(name)).ToArray();
            }
            else
            {
                _extraDisabledGameObjects = Array.Empty <GameObject>();
            }
            foreach (var go in _extraDisabledGameObjects)
            {
                go.Enabled = false;
            }

            GameObject ball = goqs.FindByName(BallName);

            _cameraGO = goqs.FindByName(PlayerCameraName);
            BallController bc = _cameraGO.GetComponent <BallController>();

            bc.Enabled = false;
            bc.GetEffectiveCameraTransform(
                ball.Transform.Position,
                registry.GetSystem <PhysicsSystem>().Space.ForceUpdater.Gravity,
                out _finalPosition,
                out _finalRotation);

            GameObject waypointParentGo = goqs.FindByName(WaypointParentName);
            var        wps = waypointParentGo.Transform.Children.Select(t => t.GameObject.GetComponent <CinematicCameraWaypoint>())
                             .OrderBy(ccw => ccw.Time).Select(ccw => ccw.GetWaypointInfo());

            _initialPosition = Transform.Position;
            _initialRotation = Transform.Rotation;
            float lastWaypointTime = wps.Last().Time;

            if (RestAtCameraPositionTime != -1f && lastWaypointTime > RestAtCameraPositionTime)
            {
                throw new InvalidOperationException(
                          "Cannot rest at camera at time " + RestAtCameraPositionTime + ". The last waypoint has time " + lastWaypointTime);
            }
            else if (RestAtCameraPositionTime == -1f)
            {
                _endTime = lastWaypointTime;
            }
            else
            {
                _endTime = RestAtCameraPositionTime;
            }

            WaypointInfo cameraRestWP = new WaypointInfo(RestAtCameraPositionTime, _finalPosition, _finalRotation);

            _waypoints = wps.Append(cameraRestWP).ToArray();

            while (_waypoints[_currentWaypointIndex].Time == 0)
            {
                _initialPosition       = _waypoints[_currentWaypointIndex].Position;
                _initialRotation       = _waypoints[_currentWaypointIndex].Rotation;
                _currentWaypointIndex += 1;
            }

            _positionCurve          = new CardinalSpline3D();
            _positionCurve.Tension  = 0.1f;
            _positionCurve.PreLoop  = CurveEndpointBehavior.Clamp;
            _positionCurve.PostLoop = CurveEndpointBehavior.Clamp;

            _lookDirCurve          = new QuaternionSlerpCurve();
            _lookDirCurve.PreLoop  = CurveEndpointBehavior.Clamp;
            _lookDirCurve.PostLoop = CurveEndpointBehavior.Clamp;

            if (_waypoints.Any())
            {
                WaypointInfo firstWP = _waypoints.First();
                _positionCurve.ControlPoints.Add(firstWP.Time, firstWP.Position);
                _lookDirCurve.ControlPoints.Add(firstWP.Time, firstWP.Rotation);
            }
            foreach (var waypoint in _waypoints)
            {
                _positionCurve.ControlPoints.Add(waypoint.Time, waypoint.Position);
                _lookDirCurve.ControlPoints.Add(waypoint.Time, waypoint.Rotation);
            }

            if (_waypoints.Any())
            {
                WaypointInfo lastWP = _waypoints.Last();
                _positionCurve.ControlPoints.Add(lastWP.Time, lastWP.Position);
                _lookDirCurve.ControlPoints.Add(lastWP.Time, lastWP.Rotation);
            }
        }
示例#8
0
 public EditorSceneLoaderSystem(Game game, GameObjectQuerySystem goqs) : base(game, goqs)
 {
 }