Jump to content

Recommended Posts

some items in Shipwrecked float while others sink.

It was easy enough to find the bit of code to make something float
       MakeInventoryFloatable(inst, "idle_water", "idle")

I went back into the item's scml and added an idle_water animation, and it works, the item floats and bobs in the water.
The problem is, other items have ripples that appear around them, but my items do not (see attached image).
This is not part of the other item's "idle_water" animation (I've checked those animations)
But is being added by the game to any item floating; any item, except mine apparently.
There doesn't appear to be anything special in the prefabs, other than the line above.

Does anyone know if there is something special that needs to be done to make these ripples appear?
 

Thank you

Ripples_1.jpg

Link to comment
Share on other sites

The file "flotable.lua" contains the following.. (among other things)

====
function Floatable:PlayWaterAnim()
    if not self.inst.AnimState:IsCurrentAnimation(self.wateranim or "") then
        self.inst.AnimState:SetLayer( LAYER_BACKGROUND )
        self.inst.AnimState:SetSortOrder( 3 )
        if self.wateranim then
            self.inst.AnimState:PlayAnimation(self.wateranim, true)
            self.inst.AnimState:SetTime(math.random())
        end
    end
    self.inst.AnimState:OverrideSymbol("water_ripple", "ripple_build", "water_ripple")
    self.inst.AnimState:OverrideSymbol("water_shadow", "ripple_build", "water_shadow")
end 

====

ripple_build.zip is in the anim folder

Converting it back to scml I find water_shadow folder and water_ripple folder with what appears to be the
images needed to build the ripple animation. There are also several animations stored, with key points on the timeline, but no images.

I suspect that somewhere, something controls how to build the ripples, based on the size of the floating object, but I am unable to find what or where.

Looking at the prefab boards.lua the only line that seems to have anything to do with floating is:
    MakeInventoryFloatable(inst, "idle_water", "idle")

So, I can only assume that whatever is controlling the build of these ripples is elsewhere.

Surely someone else has made something floatable by now, and can point me in the proper direction.

EDIT: standardcomponents.lua has the following:
function MakeRipples(inst)
    -- used if something has the ripple effects but it's an inventory item
    inst.AnimState:OverrideSymbol("water_ripple", "ripple_build", "water_ripple")
    inst.AnimState:OverrideSymbol("water_shadow", "ripple_build", "water_shadow")
end

function MakeInventoryFloatableWaterproof(inst, water_anim, land_anim)
    local water = water_anim or "idle_water"
    local land = land_anim or "idle"

    if inst.components.floatable == nil then
        inst:AddComponent("floatable")
    end
    inst.components.floatable.landanim = land
    inst.components.floatable.wateranim = water
end

function MakeInventoryFloatable(inst, water_anim, land_anim)
    MakeRipples(inst)
    MakeInventoryFloatableWaterproof(inst, water_anim, land_anim)
end

 

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...