예제 #1
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="cellPos">セルの座標</param>
 public Character(Vector2DI cellPos)
 {
     CellPosition = cellPos;
     Position     = CellPosition.To2DF() * CellSize;
     //微調整
     Position += new Vector2DF(0.3f, -0.7f) * CellSize / 2;
 }
예제 #2
0
 // External
 public Tile GetNearbyTile(Vector2DI inDirection)
 {
     if (_chunk == null)
     {
         _chunk = World.GetChunk(chunkPosition);
     }
     return(_chunk.data.GetTile(localPosition.x + inDirection.x, localPosition.y + inDirection.y));
 }
예제 #3
0
    // External
    public Chunk GenerateChunk(Vector2DI inChunkPos)
    {
        Chunk.Data newChunkData = _chunkDataGenerator.Generate(inChunkPos);
        Chunk.View newChunkView = _chunkViewGenerator.Generate(inChunkPos, newChunkData);

        Chunk newChunk = new Chunk(newChunkData, newChunkView, _world);

        return(newChunk);
    }
예제 #4
0
    // External
    public static float[,] Generate(uint inSize, Parameters inParameters, Vector2DI inOffset)
    {
        // TODO: Find a perlin noise lib and use it

        //uint scale = inParameters.scale;
        //uint octaves = inParameters.octaves;
        //float persistance = inParameters.persistance;
        //float lacunarity = inParameters.lacunarity;
        //
        //float amplitude = 1;
        //
        System.Random rng = new System.Random((int)inParameters.seed);
        //Vector2[] octaveOffsets = new Vector2[octaves];
        //for (int i = 0; i < octaves; i++)
        //{
        //    float octaveOffsetX = rng.Next(-100000, 100000) + (inOffset.x * inSize);
        //    float octaveOffsetY = rng.Next(-100000, 100000) - (inOffset.y * inSize);
        //    octaveOffsets[i] = new Vector2(octaveOffsetX, octaveOffsetY);
        //
        //    amplitude *= persistance;
        //}
        //
        ////inSize += 1;

        float[,] noiseMap = new float[inSize, inSize];

        // float halfSize = inSize / 2f;
        //
        for (int y = 0; y < inSize; y++)
        {
            for (int x = 0; x < inSize; x++)
            {
                noiseMap[x, y] = rng.Next(0, 2);
                //         amplitude = 1;
                //         float frequency = 1;
                //         float noiseHeight = 0;
                //
                //         for (int i = 0; i < octaves; i++)
                //         {
                //             float sampleX = (x - halfSize + octaveOffsets[i].x) / scale * frequency;
                //             float sampleY = (y - halfSize + octaveOffsets[i].y) / scale * frequency;
                //
                //             float perlinValue = Mathf.PerlinNoise(sampleX, sampleY);
                //             noiseHeight += perlinValue * amplitude;
                //
                //             amplitude *= persistance;
                //             frequency *= lacunarity;
                //         }
                //
                //         noiseMap[x, y] = noiseHeight * inParameters.rangeMultiplier;
            }
        }
        //
        return(noiseMap);
    }
예제 #5
0
        // Exposed
        public Chunk.Data Generate(Vector2DI inChunkPos)
        {
            Chunk.Data newChunkData = new Chunk.Data(inChunkPos);

            NoiseGenerator.Output   chunkNoiseData   = _noiseGenerator.Generate(inChunkPos);
            TileMapGenerator.Output chunkTileMapData = _tileMapGenerator.Generate(inChunkPos, chunkNoiseData);

            newChunkData.SetTiles(chunkTileMapData.tiles);

            return(newChunkData);
        }
예제 #6
0
            // External
            public Output Generate(Vector2DI inChunkPos, NoiseGenerator.Output inNoiseData)
            {
                Output newOutput = new Output(_chunkSize);

                for (int y = 0; y < _chunkSize; y++)
                {
                    for (int x = 0; x < _chunkSize; x++)
                    {
                        newOutput.tiles[x, y] = new Tile(new Vector2DI(x, y), inChunkPos, new Terrain(TerrainGenerator.GetTerrainType(inNoiseData.heightMap[x, y])));
                    }
                }

                return(newOutput);
            }
예제 #7
0
        // External
        public Chunk.View Generate(Vector2DI inPosition, Chunk.Data inChunkData)
        {
            GameObject newChunkGO = new GameObject("Chunk");

            MeshFilter   meshFilter   = newChunkGO.AddComponent <MeshFilter>();
            MeshRenderer meshRenderer = newChunkGO.AddComponent <MeshRenderer>();

            meshRenderer.material = _chunkMaterial;

            newChunkGO.transform.position = new Vector3(inPosition.x, 0, inPosition.y);

            MeshGenerator.Output meshData = _meshGenerator.Generate(inChunkData);
            ApplyMesh(meshFilter, meshData);

            Chunk.View newChunkView = new Chunk.View(newChunkGO);
            return(newChunkView);
        }
예제 #8
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="position">左上の座標</param>
 /// <param name="size">縦横の大きさ</param>
 public SerializableRectI(Vector2DI position, Vector2DI size) : this(position.X, position.Y, size.X, size.Y)
 {
 }
 /// <summary>
 /// <see cref="SerializableVector2DI"/>と<see cref="Vector2DI"/>間に同値性があるかどうかを返す
 /// </summary>
 /// <param name="serializable">同値性を調べる<see cref="SerializableVector2DI"/>のインスタンス</param>
 /// <param name="normal">同値性を調べるもう一つの<see cref="Vector2DI"/>のインスタンス</param>
 /// <returns>同値だったらtrue,それ以外でfalse</returns>
 public static bool Equals(SerializableVector2DI serializable, Vector2DI normal) => (serializable.X == normal.X) && (serializable.Y == normal.Y);
예제 #10
0
 // External
 public Output Generate(Vector2DI inChunkPos)
 {
     return(new Output {
         heightMap = Noise.Generate(_chunkSize, _noiseParameters[0], inChunkPos)
     });
 }
예제 #11
0
 // External
 public static Chunk GetChunk(Vector2DI inChunkPos) => _worldChunks[inChunkPos];
예제 #12
0
파일: Chunk.cs 프로젝트: harald921/Descent
 // Constructor
 public Data(Vector2DI inPos)
 {
     position = inPos;
 }
예제 #13
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="cellPos">セル座標</param>
 public Wall(Vector2DI cellPos)
     : base(cellPos)
 {
 }
예제 #14
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="cellPos">セルの座標</param>
 public Mine(Vector2DI cellPos)
     : base(cellPos)
 {
     Positions.Add(cellPos);
 }
예제 #15
0
 // Constructor
 public Tile(Vector2DI inLocalPosition, Vector2DI inChunkPosition, Terrain inTerrain)
 {
     localPosition = inLocalPosition;
     _terrain      = inTerrain;
     chunkPosition = inChunkPosition;
 }
예제 #16
0
        public ProfileCardView(Model.Objects.BattleToken model, Font headerFont, Font planeFont)
        {
            void AddChild(Object2D obj)
            {
                base.AddChild(obj, ChildManagementMode.Disposal | ChildManagementMode.RegistrationToLayer,
                              ChildTransformingMode.All);
            }

            this.Model = model;

            var illust = new TextureObject2D()
            {
                Texture           = Engine.Graphics.CreateTexture2D(model.Property.ProfileImage),
                TextureFilterType = TextureFilterType.Linear,
            };
            var overlay = new TextureObject2D()
            {
                Texture           = Engine.Graphics.CreateTexture2D("Textures/ProfileOverlay.png"),
                DrawingPriority   = 1,
                TextureFilterType = TextureFilterType.Linear,
            };
            var name = new TextObject2D()
            {
                Font            = headerFont,
                Position        = new Vector2DF(overlay.Texture.Size.X / 2, 40),
                Text            = model.Property.Name,
                Color           = new Color(0, 0, 0),
                DrawingPriority = 2,
            };

            name.SetCenterPosition(Altseed.Reactive.CenterPosition.CenterCenter);

            int skillIndex = 0;

            foreach (var skill in model.Skills)
            {
                var header = new TextObject2D()
                {
                    Font            = headerFont,
                    Scale           = new Vector2DF(1, 1) / 1.5f,
                    Color           = new Color(0, 0, 0),
                    Position        = new Vector2DF(25, 359 + skillIndex * 88),
                    Text            = skill.Property.Name,
                    DrawingPriority = 2,
                };
                var body = new TextObject2D()
                {
                    Font            = planeFont,
                    Scale           = new Vector2DF(1, 1) * 3 / 4,
                    Color           = new Color(0, 0, 0),
                    Position        = new Vector2DF(51, 389 + skillIndex * 88),
                    Text            = skill.Property.Description,
                    DrawingPriority = 2,
                };
                AddChild(header);
                AddChild(body);
            }

            AddChild(illust);
            AddChild(overlay);
            AddChild(name);

            size = overlay.Texture.Size;
        }