public override void Init()
    {
        // DO NOT trigger base init, or it will create component for texture quad

        this.model = base.model as TextureQuadModel;

        verticesPos      = new Vector3[4];
        verticesTexcoord = new Vector2[4];
        indexes          = new int[6] {
            0, 3, 2, 0, 2, 1
        };

        model.verticesModelVec = new List <VertexModel>();

        for (int i = 0; i != model.view.transform.childCount; ++i)
        {
            // TODO: refactor
            int         index       = i;
            VertexModel vertexModel = new VertexModel();
            vertexModel.componentsAssetID   = model.componentsAssetID; // set the vertex components id
            vertexModel.codeSnippetsAssetID = model.codeSnippetsAssetID;
            vertexModel.name   = "Vertex";
            vertexModel.parent = model;

            VertexView       vertexView       = model.view.transform.GetChild(i).gameObject.GetComponent_AutoAdd <VertexView>();
            VertexController vertexController = new VertexController();
            GameResourceManager.Instance.CombineMVC(vertexModel, vertexView, vertexController);

            vertexModel.OnPositionUpdated += ((pos) => UpdateVertexPos(index, pos));
            vertexModel.OnTexcoordUpdated += ((texcoord) => UpdateVertexTexcoord(index, texcoord));
            model.verticesModelVec.Add(vertexModel);
        }

        for (int i = 0; i != model.view.transform.childCount; ++i)
        {
            verticesPos[i]      = model.verticesModelVec[i].position;
            verticesTexcoord[i] = model.verticesModelVec[i].texcoord;
        }
        UpdateVertexData();
    }
Example #2
0
 public override void BindEntityModel(DisplayableEntityModel model)
 {
     base.BindEntityModel(model);
     this.model            = base.model as TextureQuadModel;
     this.model.meshFilter = GetComponent <MeshFilter>();
 }