-- this is a test file to try and get colour info from MC material object, but I think the issue is that the lua MC plugin isn't finished.
-- ignore this file.
--
-- Flip.lua 選択面を反転させる
--

-- 下行のコメントをはずすと高速に実行できる(可能性がある)が、途中で停止できなくなる
--  mc.debugmode(false)

  local start = os.time()

  local doc = mc.GetDocument()
  if doc then
 
    -- 操作用のプロクシオブジェクトを作成
    -- メモリ消費を抑えるためにループの外で作成しておく
    local poly = mc.polygon_proxy()
    local vtxs = {-1,-1,-1,-1}  --頂点指定用配列。(Lua配列は1から始まることに注意)
    local uvs = {-1,-1,-1,-1} --UV頂点指定用配列。(Lua配列は1から始まることに注意)
    
    local i = 0
    repeat
      local obj = mc.GetActiveMesh(doc,i)
      if obj then
        -- 面の数を取得する
        local cnt = mc.GetPolygonCount(obj)
        
        -- 編集操作を記録するためのHistoryオブジェクトを作成する
        local his = mc.CreateHistory(doc,obj,CW_HISTORY_MODIFY_GEOMETRY,"FlipByLua")

        -- 編集開始
        mc.BeginModify(obj,his)
        
        -- 全ての面を走査
        for j = 0,cnt-1 do
          if mc.GetPolygonProxy(obj,j,poly) then --ポリゴンプロクシにj番目の面の情報を取得する
          
            -- タグフィールドにINVALIDが含まれいなく、SELECTが含まれている面を探す
            if (not mc.tag_contains(poly, CWBIT_TAG_INVALID))
            and (mc.tag_contains(poly, CWBIT_TAG_SELECT)) then
             
			 
								local r, g, b, matcount 
								matcount = mc.GetMaterialCount(doc)
								print( "  GetMaterialCount " .. matcount)
								print( "  poly.mat ", poly.mat)
								r, g, b = mc.GetMaterialValueCol3( poly.mat ) 
								-- returns random/uninitialized numbers?
								print( r  .. " " ..  g .." " .. b  )
								print( " bad tests " )
								
								
								-- doesn't exist local matproxy1 =  mc.material_proxy()
								--print( "  matproxy1 ", matproxy1)
								
								
								local matproxy2 = mc.GetMaterialProxy(doc, 0 )
								-- returns nil
								print( "  matproxy2 ", matproxy2)
								
								
								
								--crashes local mat2 = mc.MakeMaterialProxy(poly.mat)
								--crashes print( "  mat2 ", mat2)
             
			 
			 
            end
          end
        end
        
        -- 編集終了
        mc.EndModify(obj,CWBIT_TAG_SELECT or CWBIT_TAG_MAKE,0,his)
      else
        break
      end
      i = i + 1
    until (false)

    -- 画面更新
    mc.RefreshView(doc, CW_VIEW_ALL)
    
    print("done.")
  end
  
  print("time=",os.time()-start)
   