Exemplo n.º 1
0
int
completeSWFPlaceObject2Block(SWFBlock block)
{
	SWFPlaceObject2Block place = (SWFPlaceObject2Block)block;
	SWFOutput out = newSizedSWFOutput(42);

	int flags =
		((place->name != NULL)			? SWF_PLACE_HAS_NAME : 0) |
		((place->ratio != -1)				? SWF_PLACE_HAS_RATIO : 0) |
		((place->masklevel != -1)		? SWF_PLACE_HAS_MASK : 0) |
		((place->cXform != NULL)		? SWF_PLACE_HAS_CXFORM : 0) |
		((place->matrix != NULL)		? SWF_PLACE_HAS_MATRIX : 0) |
		((place->character != NULL) ? SWF_PLACE_HAS_CHARACTER : 0) |
		((place->move != 0)					? SWF_PLACE_MOVE : 0) |
		((place->nActions != 0)			? SWF_PLACE_HAS_ACTIONS : 0);

	SWFOutput_writeUInt8(out, flags);
	if(place->version == 3)
	{
		flags = 0;
		if(place->hasCacheFlag) flags |= SWF_PLACE_CACHE;
		if(place->hasBlendFlag) flags |= SWF_PLACE_HAS_BLEND;
		if(place->hasFilterFlag) flags |= SWF_PLACE_HAS_FILTER;
		SWFOutput_writeUInt8(out, flags);
	}
	SWFOutput_writeUInt16(out, place->depth);
	
	if ( place->character != NULL )
		SWFOutput_writeUInt16(out, CHARACTERID(place->character));

	if ( place->matrix != NULL )
		SWFOutput_writeMatrix(out, place->matrix);

	if ( place->cXform != NULL )
		SWFOutput_writeCXform(out, place->cXform, SWF_PLACEOBJECT2);

	if ( place->ratio != -1 )
		SWFOutput_writeUInt16(out, place->ratio);

	if ( place->name != NULL )
		SWFOutput_writeString(out, (byte*)place->name);

	if ( place->masklevel != -1 )
		SWFOutput_writeUInt16(out, place->masklevel);

	if( place->version == 3 && place->hasFilterFlag)
		SWFOutput_writeFilterList(out, place->filterList);		

	if( place->version == 3 && place->hasBlendFlag)
		SWFOutput_writeUInt8(out, place->blendMode);

	place->out = out;
	writeActions(place);

	return SWFOutput_getLength(out);
}
Exemplo n.º 2
0
void Patch::writeChannels(json_t *jContainer, vector<channel_t> *channels)
{
  json_t *jChannels = json_array();
  for (unsigned i=0; i<channels->size(); i++) {
    json_t    *jChannel = json_object();
    channel_t  channel  = channels->at(i);
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_TYPE,                 json_integer(channel.type));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_INDEX,                json_integer(channel.index));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_COLUMN,               json_integer(channel.column));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MUTE,                 json_integer(channel.mute));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MUTE_S,               json_integer(channel.mute_s));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_SOLO,                 json_integer(channel.solo));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_VOLUME,               json_real(channel.volume));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_PAN_LEFT,             json_real(channel.panLeft));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_PAN_RIGHT,            json_real(channel.panRight));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN,              json_boolean(channel.midiIn));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_KEYPRESS,     json_integer(channel.midiInKeyPress));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_KEYREL,       json_integer(channel.midiInKeyRel));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_KILL,         json_integer(channel.midiInKill));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_ARM,          json_integer(channel.midiInArm));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_VOLUME,       json_integer(channel.midiInVolume));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_MUTE,         json_integer(channel.midiInMute));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_SOLO,         json_integer(channel.midiInSolo));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT_L,           json_boolean(channel.midiOutL));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT_L_PLAYING,   json_integer(channel.midiOutLplaying));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT_L_MUTE,      json_integer(channel.midiOutLmute));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT_L_SOLO,      json_integer(channel.midiOutLsolo));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_SAMPLE_PATH,          json_string(channel.samplePath.c_str()));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_KEY,                  json_integer(channel.key));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MODE,                 json_integer(channel.mode));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_BEGIN,                json_integer(channel.begin));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_END,                  json_integer(channel.end));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_BOOST,                json_real(channel.boost));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_REC_ACTIVE,           json_integer(channel.recActive));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_PITCH,                json_real(channel.pitch));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_READ_ACTIONS, json_integer(channel.midiInReadActions));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_IN_PITCH,        json_integer(channel.midiInPitch));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT,             json_integer(channel.midiOut));
    json_object_set_new(jChannel, PATCH_KEY_CHANNEL_MIDI_OUT_CHAN,        json_integer(channel.midiOutChan));
    json_array_append_new(jChannels, jChannel);

    writeActions(jChannel, &channel.actions);

#ifdef WITH_VST

    writePlugins(jChannel, &channel.plugins, PATCH_KEY_CHANNEL_PLUGINS);

#endif
  }
  json_object_set_new(jContainer, PATCH_KEY_CHANNELS, jChannels);
}
Exemplo n.º 3
0
int Sound::save(GFFFile &gff, uint32 top)
{
	uint32 list, sct;

	checkRanges();
	if(gff.writeVar(top, NWN_VAR_INT8, "Active", active)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Continuous", continuous))
		return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Random", random)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "RandomPosition", randomposition))
		return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Looping", looping)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Positional", positional))
		return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Priority", priority)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Times", times)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "Volume", volume)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_INT8, "VolumeVrtn", volumevrtn))
		return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_UINT32, "Hours", hours)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_UINT32, "Interval", interval)) return ERR(gff);
	if(gff.writeVar(top, NWN_VAR_UINT32, "IntervalVrtn", intervalvrtn))
		return ERR(gff);
	if(gff.writeFloat(top, "PitchVariation", pitchvariation)) return ERR(gff);
	if(gff.writeFloat(top, "Elevation", elevation)) return ERR(gff);
	if(gff.writeFloat(top, "MinDistance", mindistance)) return ERR(gff);
	if(gff.writeFloat(top, "MaxDistance", maxdistance)) return ERR(gff);
	if(gff.writeFloat(top, "RandomRangeX", randomrangex)) return ERR(gff);
	if(gff.writeFloat(top, "RandomRangeY", randomrangey)) return ERR(gff);
	if(gff.writeExoString(top, "Tag", tag)) return ERR(gff);
	if(gff.writeResRef(top, "TemplateResRef", templateresref)) return ERR(gff);
	if(gff.writeExoLocString(top, "LocName", name)) return ERR(gff);
	if(gff.writeList(list, top, "Sounds")) return ERR(gff);
	for(uint32 i=0;i<sounds.size();i++)
	{
		if(gff.writeListStruct(sct, list)) return ERR(gff);
		if(gff.writeSetId(sct, 0)) return ERR(gff);
		if(gff.writeResRef(sct, "Sound", sounds[i])) return ERR(gff);
	}
	switch(objectstate)
	{
		case NWN_OBJECT_BLUEPRINT:
			if(gff.writeVar(top, NWN_VAR_INT8, "PaletteID", paletteid))
				return ERR(gff);
			if(gff.writeExoString(top, "Comment", comment)) return ERR(gff);
			break;
		case NWN_OBJECT_SAVE:
			if(gff.writeVar(top, NWN_VAR_UINT32, "ObjectId", objectid))
				return ERR(gff);
			if(writeActions(gff, top)) return errcode;
		case NWN_OBJECT_INSTANCE:
			if(gff.writeVar(top, NWN_VAR_UINT8, "GeneratedType", generatedtype))
				return ERR(gff);
			if(gff.writeFloat(top, "XPosition", x)) return ERR(gff);
			if(gff.writeFloat(top, "YPosition", y)) return ERR(gff);
			if(gff.writeFloat(top, "ZPosition", z)) return ERR(gff);
			break;
	}
	if(!variables.empty())
	{
		if(gff.writeList(list, top, "VarTable")) return ERR(gff);
		if(variables.save(gff, list)) return ERR(variables);
	}
	return errcode = 0;
}