//
//  ARElementRender_inner.h
//  Supermap
//
//  Created by SuperMap_002 on 2021/4/2.
//  Copyright © 2021 Facebook. All rights reserved.
//


#import "ARElementRender.h"
#import "ARResourceItem_inner.h"
#include <vector>
#import <WebKit/WebKit.h>
#import "ARAnimation.h"

//typedef enum{
//    AR_VIDEO    = 1,
//    AR_IMAGE    = 2,
//    AR_WEBVIEW  = 3,
//    AR_TEXT     = 4,
//    AR_POINT    = 101,
//    AR_LINE     = 102,
//    AR_REGION   = 103,
//    AR_MODEL    = 201
//}ARElementType;

//Point
@interface  ARElementRender(){
    @protected
    std::vector<SCNVector3> vertices;
    float m_minVisableDis2;
    float m_maxVisableDis2;
    float m_minAnimationDis2;
    float m_maxAnimationDis2;
    BOOL m_alwaysOn;//一直显示忽略visibledis2
    BOOL m_bViewSizeFixed;//true时不近大远小
    BOOL m_bDistanceRefresh;
}

@property(nonatomic,weak)ARSCNView* m_arView;
@property(nonatomic,assign) BOOL alwaysOn;//是否常亮
-(SCNNode*)innerNode;
-(void)refreshWithDistance:(float)distance;
-(void)changeAnimation:(BOOL)bAnimation;

@end

//Point
@interface ARElementRenderPoint : ARElementRender{
    SCNNode* m_markerNode;
}


@end

//Line
@interface ARElementRenderLine : ARElementRender

@end

//Region
@interface ARElementRenderRegion : ARElementRender

@end

//Text
@interface ARElementRenderText : ARElementRender{
    UIImage *m_contentImage;
    UIImage *m_renderImage;
    SCNPlane* m_geoPlane;
    int m_distance;
    UILabel *m_label;
    SCNNode* m_textNode;
    
    
}

@end

//Image
@interface ARElementRenderImage : ARElementRender{
    CGSize m_scaleSize;
    SCNNode* m_imageNode;
    UIImageView * m_imageView;
}
//-(id)initWith:(ARSCNView*)arView param:(NSDictionary*)param;
@end

//Video
@interface ARElementRenderVideo : ARElementRender{
    SCNNode* m_videoNode;
}
//-(id)initWith:(ARSCNView*)arView param:(NSDictionary*)param;
@property(nonatomic,weak)ARVideoItem* videoItem;

@end

//WebView
@interface ARElementRenderWeb : ARElementRender/*<WKNavigationDelegate,UIScrollViewDelegate,WKUIDelegate>*/{

    //WKWebView *m_webView;
    SCNPlane * m_geoPlane;
    SCNNode* m_webNode;
    NSString* m_webURL;

}

@end

//Model
@interface ARElementRenderModel : ARElementRender {
    SCNNode* m_modleNode;
    SCNNode* m_objectNode;
    ARAnimation* m_animation;
    int m_animationIndex;
    GLTFSceneSource * m_modleResource;
    BOOL m_isAnimationPlaying;
}

@property (nonatomic,strong) ARAnimation* animation;
@property (nonatomic,assign) int modelAnimationIndex;
-(NSArray<NSString*>*)modelAnimationList;

@end
