All pastes #161680 Raw Edit

Stuff

public text v1 · immutable
·published 2006-09-05 18:26 UTC
rendered paste body
Include "type/base.bmx"
Include "type/particlesystem.bmx"
Include "type/emitter.bmx"
Include "type/particle.bmx"

Include "functions/misc.bmx"

Global objects:Tlist=New Tlist
Global GUIobjects:Tlist=New Tlist
Global emitterCounter:Int=0, particleCounter:Int=0
Global lastSelected
Global lastSelectedClass
Global AppWidth=1280, AppHeight=1024

MainWindow:TGadget=CreateWindow("ParticleEditor v0.01",0 ,0,AppWidth,Appheight,Null,window_titlebar|window_status)
MainPanel:TGadget=CreatePanel(0,0,1024,768, MainWindow)
FileMenu:TGadget=CreateMenu("File",0,WindowMenu(MainWindow))
EditMenu:Tgadget=CreateMenu("Edit",0,WindowMenu(MainWindow))
PSMenu:TGadget=CreateMenu("Create",0,WindowMenu(MainWindow))
CreateMenu "Emitter",101,PSmenu
CreateMenu "Particle",102,PSmenu
CreateMenu "Delete Selected",103,EditMenu
CreateMenu "Exit Program",104,FileMenu,KEY_ESCAPE
UpdateWindowMenu MainWindow



OverviewPanel:TGadget=CreatePanel(10,20,210,380, mainPanel,PANEL_GROUP|PANEL_ACTIVE," Particle System Overview ")
Global MyTreeView:TGadget=CreateTreeView(10,10,180,340,overviewPanel)
EditPanel:TGadget=CreatePanel(10,410,210,280,mainPanel,PANEL_GROUP|PANEL_ACTIVE," Component Edit ")

Global iconstrip:Ticonstrip=LoadIconStrip("images/iconstrip.bmp")
SetGadgetIconStrip(mytreeview, iconstrip)

Label:TGadget=CreateLabel("Blank",600,600,200,100, MainWindow)

'CREATING EMITTERS LABELS AND FIELDS
Global EmitterNameLabel:Tgadget=CreateLabel("Emitter Name:",10,10,80,20,EditPanel)
Global EmitterTTLLabel:Tgadget=CreateLabel("Time to live:",10,33,80,20,EditPanel)
Global EmitterAngleLabel:Tgadget=CreateLabel("Angle:",10,56,80,20,EditPanel)
Global EmitterEmissionRateLabel:Tgadget=CreateLabel("Emission rate:",10,79,80,20,EditPanel)

Global EmitterNameField:TGadget=CreateTextField(90,10,100,20,editpanel)
Global EmitterTTLField:TGadget=CreateTextField(90,33,100,20,editpanel)
Global EmitterAngleField:TGadget=CreateTextField(90,56,100,20,editpanel)
Global EmitterEmissionRateField:TGadget=CreateTextField(90,79,100,20,editpanel)

Global particleSystemNameLabel:Tgadget=CreateLabel("Name:",10,10,80,20,EditPanel)
Global particleSystemNameField:TGadget=CreateTextField(90,9,100,20,editpanel)

	
TParticleSystem.create("ParticleSystem01",MyTreeView)
SelectTreeViewNode (1)

Repeat
	WaitEvent()
  	Select EventID()
  		Case EVENT_WINDOWCLOSE
     		End
		
		Case EVENT_GADGETSELECT
				lastSelected=EventData()
				For test:Tbase = EachIn objects
					If test.id=EventData() Then lastSelectedClass=test.class
				Next
				showEditPanel()

				Case EVENT_GADGETACTION
			'When the user inputs data in a field all the class information is updated
			For temp:TBase = EachIn objects
				If temp.id=lastSelected Then
					Select lastSelectedClass
					Case 1 'If a Particle system class has been changed
							temp.name=TextFieldText(ParticleSystemNameField)
							ModifyTreeViewNode(temp.id,temp.name)					
						Case 2 'If an emitter class has been changed
							temp.name=TextFieldText(EmitterNameField)
							temp.ttl=TextFieldText(EmitterTTLField).tofloat()
							ModifyTreeViewNode(temp.id,temp.name)					
					EndSelect
				EndIf
			Next
				
		Case EVENT_MENUACTION
			Select EventData()
			Case 103
				FreeGadget(lastselected)
				For Emitter:TEmitter=EachIn objects
					If emitter.id = lastselected Then emitter.remove()
				Next
			Case 101
				If emitterCounter<11 Then
					TEmitter.create("Emitter0"+f_getEmitterNo(),lastSelected)
				Else
					TEmitter.create("Emitter"+f_getEmitterNo(),lastSelected)
				EndIf
				ActivateGadget(OverviewPanel)
				ActivateGadget(MyTreeView)
			Case 102
				If lastselectedclass<>2 Then
					Notify "Particles can only be created when an Emitter is selected."
				Else
					If emitterCounter<11 Then
						TParticle.create("Particle0"+f_getEmitterNo(),lastSelected)
					Else
						TParticle.create("Particle"+f_getEmitterNo(),lastSelected)
					EndIf
					ActivateGadget(OverviewPanel)
					ActivateGadget(MyTreeView)
				EndIf

			Case 104
				End
			EndSelect
		
	
		Default
			SetStatusText (mainwindow, EventData())

	EndSelect
	SetGadgetText Label, CurrentEvent.ToString()
Forever

Function showEditPanel()
	HideGadget (EmitterTTLField)
	HideGadget (EmitterTTLLabel)
	HideGadget (EmitterNameLabel)
	HideGadget (EmitterNameField)
	HideGadget (EmitterAngleLabel)
	HideGadget (EmitterAngleField)
	HideGadget (EmitterEmissionRateLabel)
	HideGadget (EmitterEmissionRateField)
	HideGadget (particleSystemNameLabel)
	HideGadget (particleSystemNameField)

	Select lastSelectedClass
	Case 1
		drawParticleSystemPanel()
	Case 2
		drawEmitterPanel()
	Case 3
		'drawParticlePanel()
	EndSelect
End Function

Function drawEmitterPanel()
	ShowGadget (EmitterTTLField)
	ShowGadget (EmitterTTLLabel)
	ShowGadget (EmitterNameLabel)
	ShowGadget (EmitterNameField)
	ShowGadget (EmitterAngleLabel)
	ShowGadget (EmitterAngleField)
	ShowGadget (EmitterEmissionRateLabel)
	ShowGadget (EmitterEmissionRateField)
	
	For Local temp:TEmitter = EachIn objects
		If temp.id=lastSelected Then
			SetGadgetText(EmitterNameField, temp.name)
			SetGadgetText(EmitterTTLField, temp.ttl+" sec")
			SetGadgetText(EmitterAngleField, temp.angle+"")
			SetGadgetText(EmitterEmissionRateField, temp.Emissionrate+" /sec")
		EndIf
	Next
EndFunction

Function drawParticleSystemPanel()
	ShowGadget particleSystemNameLabel
	ShowGadget particleSystemNameField

	For Local temp:TBase = EachIn objects
		If temp.id=lastSelected Then
			SetGadgetText(particleSystemNameField, temp.name)
		EndIf
	Next
End Function