Re: MOSAIC - Modular Ordanance Symmetric Automated Intelligence Conflicts
Posted: 18 Jun 2019, 20:15
				
				Open Source Realtime Strategy Game Engine
https://springrts.com/phpbb/
Code: Select all
  function gadget:GetInfo()
    return {
        name = "Relative Unit Scale:",
        desc = "Scales Units between a realistic scale and a tactical scale depending on camera heigth",
        author = "Picasso",
        date = "21st of March 2019",
        license = "GPLv3", 
        layer = 0,
        enabled = true
    }
end
if (gadgetHandler:IsSyncedCode()) then
	 VFS.Include("scripts/lib_UnitScript.lua")
	 VFS.Include("scripts/lib_mosaic.lua")
	scaleTable= getUnitScaleTable(UnitDefNames)
	
   local function tansferScaleTable()
        for typeDefID, scales in pairs(scaleTable) do
            SendToUnsynced("transferScaleTable", typeDefID, scales.realScale, scales.tacticalScale)
        end
    end
	
	function gadget:UnitCreated(unitID, unitDefID)
		SendToUnsynced("SetUnitLuaDraw", unitID, unitDefID)
	end
	StartFrame = Spring.GetGameFrame()
    function gadget:GameFrame(frame)
      if frame  ==  StartFrame + 1 then  
            tansferScaleTable()
	  end
    end
else -- unsynced
    local UnsyncedScaleTable = {} 
    local unitIDtypeDefIDMap = {}
	
	local limitOfTacticalScale = 2500
	local limitOfRealisticScale = 500
	local camPos={x=0, y=0, z=0}
	local groundHeigth = 0
	
    local function transferScaleTable(callname, typeDefID, realScale, tacticalScale)
        UnsyncedScaleTable[typeDefID] = {realScale=realScale, tacticalScale =tacticalScale}
    end
    local function setUnitLuaDraw(callname, unitID,typeDefID)
		unitIDtypeDefIDMap[unitID]=typeDefID
	    Spring.UnitRendering.SetUnitLuaDraw(unitID, true)
    end
    function gadget:Initialize()
        gadgetHandler:AddSyncAction("transferScaleTable", transferScaleTable)
        gadgetHandler:AddSyncAction("SetUnitLuaDraw", setUnitLuaDraw)
    end
	
	function gadget:GameFrame(frame)
		camPos.x,camPos.y,camPos.z =	Spring.GetCameraPosition()
		groundHeigth = Spring.GetGroundHeight(camPos.x,camPos.z)
	end
	
	local function mix(vA, vB, fac)
		return (fac * vA +(1-fac) * vB)
	end
	
	
    function gadget:DrawUnit(unitID)
        if unitIDtypeDefIDMap[unitID] and UnsyncedScaleTable[unitIDtypeDefIDMap[unitID]] then
            local scale = UnsyncedScaleTable[unitIDtypeDefIDMap[unitID]]
			
			if scale then 
				camHeigth = math.abs(camPos.y - groundHeigth)
				
				factor = 0.0
				if camHeigth >= limitOfRealisticScale and camHeigth <= limitOfTacticalScale then
					factor = mix(scale.realScale, scale.tacticalScale, 1 - (math.abs(camHeigth - limitOfRealisticScale)/math.abs(limitOfTacticalScale - limitOfRealisticScale)))
				end
				
				if camHeigth > limitOfTacticalScale then 
					factor = scale.tacticalScale
				end
				if camHeigth < limitOfRealisticScale then 
					factor = scale.realScale
				end
			
            gl.Scale(factor, factor, factor)
            gl.UnitRaw(unitID, true)
			end
        end
    end
endCode: Select all
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Sax FWL Error: Texture with sid "ARABIC01_10_MAP-image" not found in effect with id "ARABIC01_10-fx".
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\equipment\baby\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBaby_v1_L1.123c17d91afa-b7f2-4261-8c93-884662b4c79c\SittingBabyDiffuseMap.jpg.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.
Image not found: \\D:\spring\games\MosaicDev\Models\civilians\civ_arab_tex_diffd.psd.Code: Select all
  <library_effects>
  
  </library_effects>