예제 #1
0
        protected void DoColorPaintAction()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (UpdateCache(go))
            {
                STETilemap tilemap = cachedComponent as STETilemap;
                Vector2    center;
                if ((ePositionType)positionType.Value == ePositionType.LocalPosition)
                {
                    center = position.Value;
                }
                else// if ((ePositionType)positionType.Value == ePositionType.GridPosition)
                {
                    center = TilemapUtils.GetTileCenterPosition(tilemap, (int)position.Value.x, (int)position.Value.y);
                }
                if (applyToTilemapGroup.Value && tilemap.ParentTilemapGroup)
                {
                    tilemap.ParentTilemapGroup.IterateTilemapWithAction(
                        (STETilemap tmap) =>
                    {
                        TilemapVertexPaintUtils.VertexPaintCircle(tmap, center, radius.Value, tileColor.Value, (eBlendMode)blendingMode.Value, (eTileColorPaintMode)tileColorPaintMode.Value == eTileColorPaintMode.Vertex, intensityCurve.curve);
                        tmap.UpdateMesh();
                    }
                        );
                }
                else
                {
                    TilemapVertexPaintUtils.VertexPaintCircle(tilemap, center, radius.Value, tileColor.Value, (eBlendMode)blendingMode.Value, (eTileColorPaintMode)tileColorPaintMode.Value == eTileColorPaintMode.Vertex, intensityCurve.curve);
                    tilemap.UpdateMesh();
                }
            }
        }
        public override void OnSceneGUI()
        {
            base.OnSceneGUI();

            if (!m_tilemap && !m_tileset)
            {
                return;
            }

            Vector2 center = Vector2.zero;

            if ((ePositionType)m_action.positionType.Value == ePositionType.LocalPosition)
            {
                center = m_action.position.Value;
            }
            else// if ((ePositionType)positionType.Value == ePositionType.GridPosition)
            {
                if (m_tilemap)
                {
                    center = TilemapUtils.GetTileCenterPosition(m_tilemap, (int)m_action.position.Value.x, (int)m_action.position.Value.y);
                }
                else if (m_tileset)
                {
                    center = TilemapUtils.GetGridWorldPos((int)m_action.position.Value.x, (int)m_action.position.Value.y, m_tileset.TilePxSize / m_tileset.PixelsPerUnit);
                }
            }
            EditorCompatibilityUtils.CircleCap(0, center, Quaternion.identity, m_action.radius.Value);
        }