﻿//
// sculpty morpher
//needs header.

integer position;  // which texture are we on?

change_sculpture()
{
    integer textures_available = llGetInventoryNumber(INVENTORY_TEXTURE);
    if (textures_available == 0) {
        // nothing to morph into.
        return;
    }
    position++;
    if (position >= textures_available) {
        // we rolled over, so go back.
        position = 0;
    }
    string texture_name = llGetInventoryName(INVENTORY_TEXTURE, position);
    llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, texture_name, PRIM_SCULPT_TYPE_SPHERE]); 
}

default {
    state_entry() { if (llSubStringIndex(llGetObjectName(), "huffotronic") < 0) state real_default; }
    on_rez(integer parm) { state rerun; }
}
state rerun { state_entry() { state default; } }

state real_default
{
    state_entry()
    {
        llSetTimerEvent(4.0);
        position = 0;
    }
    
    timer() {
        change_sculpture();
    }
    
    changed(integer type) {
        if (type & CHANGED_INVENTORY) {
            change_sculpture();
        }
    }
}
