using System.Collections.Generic;
using UnityEngine;

public class DataConfig : MonoBehaviour
{

}

public class objectData
{
    public Vector3 pos;
    public Vector3 rot;
    public Vector3 scale;
}

public enum MaterialType
{
    None,
    Image,
    Video,
    Model,
    Text,
    Image_Video_Text,
    Model_Text,
    LocaImage,
    Vuforia,
    
}

public enum SpoitType
{
    Null,
    ShanXin,
    PingZiXing,
    BingLie,
    LunBo,
}

public enum SceneType
{
    Vuforial,
    PointCloud,
}


public class ObjectTransform
{
    public Vector3 startPos { get; set; }
    public Vector3 startRot { get; set; }
    public Vector3 startScale { get; set; }

    public Vector3 nowPos { get; set; }
    public Vector3 nowRot { get; set; }
    public Vector3 nowScale { get; set; }

    public void SetStartValue(Vector3 _startPos, Vector3 _StartRot, Vector3 _startScale)
    {
        Debug.Log("设置初始值");
        startPos = _startPos;

        startRot = _StartRot;

        startScale = _startScale;
    }

    public void SavePos(Vector3 _startPos, Vector3 _StartRot, Vector3 _startScale)
    {
        Debug.Log("SavePosSavePosSavePosSavePos");
        nowPos = _startPos;
        nowRot = _StartRot;
        nowScale = _startScale;
    }

}

/// <summary>
///  锚点属性
/// </summary>
public class Anchor
{
    public int id { get; set; }
    public bool select { get; set; }
    public string pictureName { get; set; }
    public ObjectTransform objectTransform { get; set; }
    public AnchorPos picturePosition { get; set; }
    public string pictureUrl { get; set; }
   // public string localloadPath { get; set; }

    public Anchor()
    {
        select = false;
        objectTransform = new ObjectTransform();
    }
}

/// <summary>
/// 景点坐标以及触发器坐标和范围
/// </summary>
public class AnchorPos
{
    /// <summary>
    /// 景点所在X | Y轴坐标
    /// </summary>
    public double pointRelativeX { get; set; }
    public double pointRelativeY { get; set; }
    /// <summary>
    /// 景点矩形区域宽高
    /// </summary>
    public double areaRelativeW { get; set; }
    public double areaRelativeH { get; set; }
    /// <summary>
    /// 景点矩形区域所在X Y轴坐标
    /// </summary>
    public double areaRelativeX { get; set; }
    public double areaRelativeY { get; set; }

}

/// <summary>
/// 景点坐标以及触发器坐标和范围
/// </summary>
public class SpoitPos
{
    /// <summary>
    /// 景点所在X | Y轴坐标
    /// </summary>
    public double pointRelativeX { get; set; }
    public double pointRelativeY { get; set; }
    /// <summary>
    /// 景点矩形区域宽高
    /// </summary>
    public double areaRelativeW { get; set; }
    public double areaRelativeH { get; set; }
    /// <summary>
    /// 景点矩形区域所在X Y轴坐标
    /// </summary>
    public double areaRelativeX { get; set; }
    public double areaRelativeY { get; set; }

}
/// <summary>
/// 单个素材属性
/// </summary>
public class MaterialObjValueNew
{
    //WEB端排版
    public string template { get; set; }


    public int fileId { get; set; }
    public int id { get; set; }
    public string uid { get; set; }

    //素材名称
    public string name { get; set; }
    /// <summary>
    /// 素材类型
    /// </summary>
    public int type { get; set; }
    /// <summary>
    /// 文本内容
    /// </summary>
    public string textContent { get; set; }
    /// <summary>
    /// 文字位置(如果类型不为文字 则为NULL)
    /// </summary>
    public string textPosition { get; set; }
    /// <summary>
    /// 文本框背景
    /// </summary>
    public string textBJ { get; set; }
    /// <summary>
    /// 下载地址
    /// </summary>
    public string downloadPath { get; set; }
    /// <summary>
    /// 本地保存地址
    /// </summary>
    public string localSavePath { get; set; }
    /// <summary>
    /// 素材位置信息
    /// 文字传递的是方位,其余类型场地为空值
    /// </summary>
    public ObjectTransform objectTransform { get; set; }


}

/// <summary>
/// 单个素材属性
/// </summary>
public class MaterialObjValue
{
    public int fileId { get; set; }
    public int id { get; set; }
    public string uid { get; set; }

    //素材名称
    public string name { get; set; }
    /// <summary>
    /// 素材类型
    /// </summary>
    public int type { get; set; }
    /// <summary>
    /// 文本内容
    /// </summary>
    public string textContent { get; set; }
    /// <summary>
    /// 文字位置(如果类型不为文字 则为NULL)
    /// </summary>
    public string textPosition { get; set; }
    /// <summary>
    /// 文本框背景
    /// </summary>
    public string TextBJ { get; set; }
    /// <summary>
    /// 下载地址
    /// </summary>
    public string DownloadPath { get; set; }
    /// <summary>
    /// 本地保存地址
    /// </summary>
    public string localSavePath { get; set; }
    /// <summary>
    /// 素材位置信息
    /// 文字传递的是方位,其余类型场地为空值
    /// </summary>
    public ObjectTransform ObjectTransform { get; set; }

}
/// <summary>
/// 景点下素材组合
/// </summary>
public class MaterialObl
{
    /// <summary>
    /// 主键id
    /// </summary>
    public int id { get; set; }
    /// <summary>
    /// 是否设置过素材
    /// </summary>
    public bool select { get; set; }
    /// <summary>
    /// 素材名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 素材类型 1图片 2视频 3模型 4文字 5图片+文字/视频+文字 6模型+文字
    /// </summary>
    public int type { get; set; }
    /// <summary>
    /// 描述
    /// </summary>
    public string describe { get; set; }
    /// <summary>
    /// 素材json数组
    /// </summary>
    public List<MaterialObjValue> materialList { get; set; }
    /// <summary>
    /// 素材图标(缩略图)
    /// </summary> 
    public string icon { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public int updateTime { get; set; }
    /// <summary>
    /// 素材坐标
    /// 网页端传递的数据为空
    /// </summary>
    public ObjectTransform objectTransform { get; set; }
    /// <summary>
    /// 用户ID
    /// </summary>
    public int userId { get; set; }
    /// <summary>
    /// 排版
    /// 1-单排平铺,2-单排扇形,3-双排平铺,4-双排扇形,5-巨幕
    /// </summary>
    public string typesetting { get; set; }

    public bool autoplay { get; set; }
    public int iconId { get; set; }


    public MaterialObl()
    {
        select = false;
        materialList = new List<MaterialObjValue>();
        objectTransform = new ObjectTransform();
    }
}

/// <summary>
/// 景点下素材组合
/// </summary>
public class MaterialOblNew
{
    /// <summary>
    /// 主键id
    /// </summary>
    public int id { get; set; }
    /// <summary>
    /// 是否设置过素材
    /// </summary>
    public bool select { get; set; }
    /// <summary>
    /// 素材名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 素材类型 1图片 2视频 3模型 4文字 5图片+文字/视频+文字 6模型+文字
    /// </summary>
    public int type { get; set; }
    /// <summary>
    /// 描述
    /// </summary>
    public string describe { get; set; }
    /// <summary>
    /// 素材json数组
    /// </summary>
    public List<MaterialObjValueNew> materialList { get; set; }
    /// <summary>
    /// 素材图标(缩略图)
    /// </summary> 
    public string icon { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public int updateTime { get; set; }
    /// <summary>
    /// 素材坐标
    /// 网页端传递的数据为空
    /// </summary>
    public ObjectTransform objectTransform { get; set; }
    /// <summary>
    /// 用户ID
    /// </summary>
    public int userId { get; set; }
    /// <summary>
    /// 排版
    /// 1-单排平铺,2-单排扇形,3-双排平铺,4-双排扇形,5-巨幕
    /// </summary>
    public string typesetting { get; set; }

    public bool autoplay { get; set; }


    public MaterialOblNew()
    {
        select = false;
        materialList = new List<MaterialObjValueNew>();
        objectTransform = new ObjectTransform();
    }
}

/// <summary>
/// 景点属性
/// </summary>
public class SpoitValue
{
    public int triggerImageId;
    /// <summary>
    /// 景点ID
    /// </summary>
    public int id;
    /// <summary>
    /// 场景id
    /// </summary>
    public int projectId;
    /// <summary>
    /// 景点名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 景点和触发范围信息
    /// </summary>
    public List<SpoitPos> SpoitTransform { get; set; }

    //坐标 旋转 尺寸 如果没有数据的话默认为NULL
    public ObjectTransform spoitTf { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public int updateTime { get; set; }
    /// <summary>
    /// 素材
    /// </summary>
    public List<MaterialObl> material { get; set; }
    /// <summary>
    /// 景点和触发范围信息
    /// </summary>
    public List<SpoitPos> position { get; set; }
    /// <summary>
    /// 景点和触发范围信息
    /// </summary>
    public SpoitPos triggerRange { get; set; }

    public bool location;
}

public class SpoitValueDetail
{
    /// <summary>
    /// 景点ID
    /// </summary>
    public int id;
    /// <summary>
    /// 场景id
    /// </summary>
    public int projectId;
    /// <summary>
    /// 景点名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 景点和触发范围信息
    /// </summary>
    public List<SpoitPos> position { get; set; }
    /// <summary>
    /// 景点和触发范围信息
    /// </summary>
    public SpoitPos triggerRange { get; set; }
    /// <summary>
    /// 景点素材父物体坐标 旋转 尺寸 如果没有数据的话默认为NULL
    /// </summary>
    public ObjectTransform spoitTf { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public int updateTime { get; set; }
    /// <summary>
    /// 素材
    /// </summary>
    public List<MaterialObl> material { get; set; }
    public int triggerImageId { get; set; }
    
}


/// <summary>
/// 整个场景属性
/// </summary>
public class SceneValue
{
    public int id { get; set; }
    /// <summary>
    /// 场景名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 场景照片
    /// </summary>
    public string image { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public long updateTime { get; set; }
    /// <summary>
    /// 景点信息
    /// </summary>
    public List<SpoitValue> listSpoit { get; set; }
    /// <summary>
    /// 场景-地图
    /// url
    /// </summary>
    public string map { get; set; }
    /// <summary>
    /// 场景-沙盘
    /// url
    /// </summary>
    public string sandTable { get; set; }
    /// <summary>
    /// 线路
    /// </summary>
    public List<NavLinesItem> navLines { get; set; }

    public List<BdImage> backgroundImages;

    /// <summary>
    /// 场景真实长宽
    /// </summary>
    public float length { get; set; }
    public float width { get; set; }

    /// <summary>
    ///  锚点Vuforia 数据
    /// </summary>
    public string vuforiaXML { get; set; }
    public string vuforiaDat { get; set; }
    /// <summary>
    ///  锚点列表
    /// </summary>
    public List<Anchor> listPicture { get; set; }
}

public class BdImage
{
    public string base64;
}


#region 路线

public class NavLinesItem
{
    /// <summary>
    /// 更新时间
    /// </summary>
    public long updateTime { get; set; }
    /// <summary>
    /// 图片高度
    /// </summary>
    public double realityHeight { get; set; }
    /// <summary>
    /// 图片宽度
    /// </summary>
    public double realityWidth { get; set; }
    /// <summary>
    /// 路线的虚拟导游信息 : 1 导游A, 2 导游B, 3 不使用虚拟导游
    /// </summary>
    public int guideMod { get; set; }
    /// <summary>
    /// 路线样式风格 : 1 样式1, 2 样式2, 3 样式3
    /// </summary>
    public int routerMod { get; set; }


    /// <summary>
    /// 路线名称
    /// </summary>
    public string name { get; set; }
    /// <summary>
    /// 起点(x1,y1)
    /// </summary>
    public double x1 { get; set; }
    /// <summary>
    /// 起点(x1,y1)
    /// </summary>
    public double y1 { get; set; }
    /// <summary>
    ///  终点(x2, y2)
    /// </summary>
    public double x2 { get; set; }
    /// <summary>
    ///终点(x2, y2)
    /// </summary>
    public double y2 { get; set; }
    /// <summary>
    /// 路径线段
    /// </summary>
    public List<line> lines { get; set; }
}

public class line
{
    /// <summary>
    /// 起点(x1,y1)
    /// </summary>
    public double x1 { get; set; }
    /// <summary>
    /// 起点(x1,y1)
    /// </summary>
    public double y1 { get; set; }
    /// <summary>
    ///  终点(x2, y2)
    /// </summary>
    public double x2 { get; set; }
    /// <summary>
    ///终点(x2, y2)
    /// </summary>
    public double y2 { get; set; }
    // 以下为路线段的私有信息
    public string _groups { get; set; }
    public string _id { get; set; }
    public int _index { get; set; }
    public string _name { get; set; }
    public string _type { get; set; }

}


#endregion