コード例 #1
0
ファイル: Segment.cs プロジェクト: chrwoizi/canyonshooter
 private Vector3 GetPointFromPlane(SegmentDescription desc, int position)
 {
     return(desc.CanyonForm[position].X * desc.PlaneX + desc.CanyonForm[position].Y * desc.PlaneY);
 }
コード例 #2
0
ファイル: Segment.cs プロジェクト: chrwoizi/canyonshooter
 public bool Generate(SegmentDescription data)
 {
     throw new Exception("The method or operation is not implemented.");
 }
コード例 #3
0
        void ICanyon.StreamLoad(int index, Level level)
        {
            //if (index == 0) return; // Ersten Block überspringen, da hier noch keine Wand aufgespannt werden kann.
            List <Vector2> cForm = new List <Vector2>();

            foreach (Vec2 tmp in level.Blocks[index].Walls)
            {
                cForm.Add(tmp.v);
            }
            if (index == 0)
            {
                SegmentDescription des        = new SegmentDescription(level.Cache[index].X, level.Cache[index].Y, Vector3.Zero, cForm);
                Segment            tmpSegment = new Segment(game);
                tmpSegment.CanyonValues = des;
                tmpSegment.GlobalIndex  = index;
                canyonSegments.Add(tmpSegment);
            }
            else if (index == 1)
            {
                SegmentDescription des        = new SegmentDescription(level.Cache[index].X, level.Cache[index].Y, level.Cache[index - 1].ADir, cForm);
                Segment            tmpSegment = new Segment(game);
                tmpSegment.CanyonValues = des;
                canyonSegments[canyonSegments.Count - 1].NextCanyonSegement = tmpSegment;
                tmpSegment.LastCanyonSegment = canyonSegments[canyonSegments.Count - 1];
                tmpSegment.GlobalIndex       = index;
                canyonSegments.Add(tmpSegment);
                canyonSegments[canyonSegments.Count - 1].LoadSegmentPoints();
            }
            else
            {
                SegmentDescription des        = new SegmentDescription(level.Cache[index].X, level.Cache[index].Y, level.Cache[index - 1].ADir, cForm);
                Segment            tmpSegment = new Segment(game);
                tmpSegment.CanyonValues = des;
                canyonSegments[canyonSegments.Count - 1].NextCanyonSegement = tmpSegment;
                tmpSegment.LastCanyonSegment = canyonSegments[canyonSegments.Count - 1];
                tmpSegment.GlobalIndex       = index;
                canyonSegments.Add(tmpSegment);
                canyonSegments[canyonSegments.Count - 1].LoadSegmentPoints();
                canyonSegments[canyonSegments.Count - 2].LoadCanyonModel();
                if (index > 5)
                {
                    canyonSegments[canyonSegments.Count - 5].LoadBoundingBoxes();
                }
                if (index > 7)
                {
                    canyonSegments[canyonSegments.Count - 7].LoadSkyBox();
                }
            }

            /*
             * List<Vector2> cForm = new List<Vector2>();
             * foreach (Vec2 tmp in level.Blocks[index-1].Walls)
             * {
             * cForm.Add(tmp.v);
             * }
             * SegmentDescription des = new SegmentDescription(level.Cache[index-1].X, level.Cache[index-1].Y, level.Cache[index-1].ADir, cForm) ;
             * Segment tmpSegment = new Segment(game);
             * tmpSegment.CanyonValues = des;
             * if (canyonSegments.Count != 0)
             * {
             *  tmpSegment.LastCanyonSegment = canyonSegments[canyonSegments.Count - 1];
             *
             * }
             */
            //canyonSegments.Add(tmpSegment);

            /*if (tmpSegment.LastCanyonSegment != null)
             * {
             *  tmpSegment.LoadSegements();
             * }
             * if (tmpSegment.LastCanyonSegment != null)
             * {
             *  tmpSegment.LoadCanyon();
             * }*/
            // ToDo: implementieren
            //
            // Alle Benötigten Vars:
            // - level.Blocks[index].Walls -- enthält die Liste der Wände
            // - level.Cache[index] -- enthält die "Zwischenebenen"

            // genauer:  (wenn du mehr brauchst, machst du was falsch) ;-)
            // - level.Blocks[index-1].Walls
            // - level.Blocks[index].Walls
            // - level.Cache[index-1].Pos
            // - level.Cache[index-1].X
            // - level.Cache[index-1].Y
            // - level.Cache[index].Pos
            // - level.Cache[index].X
            // - level.Cache[index].y
            //level.Cache[index]
            // Momentan werden bereits Beispielwerte übergeben. Diese sind denen von oben sehr ähnlich.
        }