Ejemplo n.º 1
0
        /// <summary>This Method instantiates a LevelNode with the given parameters.</summary>
        /// <remarks>It is called by reflection from LevelNodeController</remarks>
        // ReSharper disable once UnusedMember.Global
        public TLevelNodeSubclass CreateLevelNode <TLevelNodeSubclass>(LevelNodeController controller) where TLevelNodeSubclass : LevelNode
        {
            var levelNodeGameObject    = new GameObject("LevelNode " + typeof(TLevelNodeSubclass).Name);
            TLevelNodeSubclass theNode = levelNodeGameObject.AddComponent <TLevelNodeSubclass>();

            theNode.Initialize(this, controller);

            return(theNode);
        }
Ejemplo n.º 2
0
        public override void Initialize(Level level, LevelNodeController controller)
        {
            Debug.Assert(controller.Step is Scenario.TextStep, "Given scenariostep is no TextStep!");

            _shaper = new LinearShaper(controller.Offset, controller.Length);
            //var textMesh = gameObject.AddComponent<TextMesh>();
            //textMesh.text = ((Scenario.TextStep)controller.Step).Text;

            base.Initialize(level, controller);
        }
Ejemplo n.º 3
0
        public void OnNodeChangedLength(LevelNodeController nodeController)
        {
            //rebuild the parts of the spline points which are necessary
            var listNode = World.Instance.LevelController.CurrentListNode.List.Find(nodeController);

            Debug.Assert(listNode != null, "node is not in List!");

            //count the unchanged points
            var iterator    = listNode.Previous;
            int accumulator = 0;

            while (iterator != null)
            {
                accumulator += iterator.Value.LevelNode.Shaper.SplinePoints.Count;
                iterator     = iterator.Previous;
            }
            var currentPoints = Spline.Points;
            //take the unchanged points
            var unchangedPoints = currentPoints.GetRange(0, accumulator);

            // now we build the new pointslist
            var newPoints = new List <Vector3>();

            newPoints.AddRange(unchangedPoints);
            iterator = listNode;
            while (iterator != null)
            {
                iterator.Value.LevelNode.Shaper.Start = iterator.Value.LevelNode.Offset;
                // it does not matter if previous is null because the only shaper that should logically be able to receive
                // a null value at this point is the default shaper and it doesn't care
                iterator.Value.LevelNode.Shaper.UpdateSplinePoints(
                    previous: iterator.Previous == null? null : iterator.Previous.Value.LevelNode.Shaper,
                    length: iterator.Value.Length
                    );

                newPoints.AddRange(iterator.Value.LevelNode.Shaper.SplinePoints);
                iterator = iterator.Next;
            }
            Spline.Points = newPoints;

            //invalidate the node before this one too because he might be affected as well
            iterator = listNode.List.First;
            while (iterator != null)
            {
                iterator.Value.LevelNode.Invalidate();
                iterator = iterator.Next;
            }
        }
Ejemplo n.º 4
0
 public virtual void Initialize(Level level, LevelNodeController controller)
 {
     _level     = level;
     _chunks    = new List <LevelNodeChunk>();
     Controller = controller;
 }
Ejemplo n.º 5
0
 public void OnPreviousNodeChangedLength(LevelNodeController controller)
 {
     Invalidate();
 }
Ejemplo n.º 6
0
 public override void Initialize(Level level, LevelNodeController controller)
 {
     _shaper = new RandomShaper(controller.Offset, controller.Length);
     base.Initialize(level, controller);
 }
Ejemplo n.º 7
0
 public override void Initialize(Level level, LevelNodeController controller)
 {
     _shaper = new DefaultShaper();
     base.Initialize(level, controller);
 }