Thanks, Red Eye!
Would you be willing to help me figure out a way to code my own color picker for the lights? I'm thinking I wouldn't need more than a few primary colors, so it wouldn't be too difficult to code it since I wouldn't truly have any "color mixers" or hue/saturation adjusters, but I've never attempted it before and am not sure how to proceed with it...so if you could give me any pointers there and pseudo code (even if it's in DGDK) I would greatly appreciate it!
-------------------------------------------------------------------
I haven't been able to do much work on this since yesterday afternoon. I found a couple of little bugs, for example if you create a level without lights and save it, sometimes, even though there is NO light information saved in it, it will still create a light at the first object's position. It seems to happen at random intervals and I can't really re-create it. Can anyone let me know if they encounter it?
Another one is that if you click "Hide Selected Object" in the Edit menu, not only will the selected object become dark-ghosted (to represent the fact it will be hidden in-game), but the wire selection box becomes dark-ghosted as well. No idea what causes that.
I made a couple of unnecessary but useful (to me) changes:
Some Changes by
CoffeeCoder, on Flickr
I changed the color of the background because black wasn't working well with the lights. I also changed the lights from small cubes to large spheres to make them more easily identifiable.
Before I add anything else, I REALLY need to tidy up the code...it's still manageable but it's getting really, really messy.
For example, let me show you my positioning code.....
`Move the selected object
If SelObj <> 0
`Get new positioning variables
Global NewPosX# : NewPosX#=Object Position X(SelObj)
Global NewPosY# : NewPosY#=Object Position Y(SelObj)
Global NewPosZ# : NewPosZ#=Object Position Z(SelObj)
`Move the object left
If KeyState(75)=1 and Grid=1
If Press=1
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosX#=NewPosX#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light,SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosX#=NewPosX#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press=0
Else
Press=1
EndIf
If KeyState(75)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosX#=NewPosX#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light,SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosX#=NewPosX#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
`Right
If KeyState(77)=1 and Grid=1
If Press2=1
If ObjectProps(SelObj).Light<>0
Light=ObjectProps(SelObj).Light
NewPosX#=NewPosX#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light,SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosX#=NewPosX#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press2=0
Else
Press2=1
EndIf
If KeyState(77)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosX#=NewPosX#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light,SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosX#=NewPosX#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
If KeyState(72)=1 and Grid=1
If Press3=1
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosZ#=NewPosZ#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light,SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosZ#=NewPosZ#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press3=0
Else
Press3=1
EndIf
If KeyState(72)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosZ#=NewPosZ#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosZ#=NewPosZ#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
If KeyState(80)=1 and Grid=1
If Press4=1
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosZ#=NewPosZ#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosZ#=NewPosZ#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press4=0
Else
Press4=1
EndIf
If KeyState(80)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosZ#=NewPosZ#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosZ#=NewPosZ#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
If KeyState(78)=1 and Grid=1
If Press5=1
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosY#=NewPosY#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosY#=NewPosY#+5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press5=0
Else
Press5=1
EndIf
If KeyState(78)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosY#=NewPosY#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosY#=NewPosY#+0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
If KeyState(74)=1 and Grid=1
If Press6=1
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosY#=NewPosY#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosY#=NewPosY#-5
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
Press6=0
Else
Press6=1
EndIf
If KeyState(74)=1 and Grid=0
If ObjectProps(SelObj).Light <> 0
Light=ObjectProps(SelObj).Light
NewPosY#=NewPosY#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
Set Light to Object Position Light, SelObj
EndIf
If ObjectProps(SelObj).Light=0
NewPosY#=NewPosY#-0.05
Position Object SelObj,NewPosX#,NewPosY#,NewPosZ#
Position Object 5000,NewPosX#,NewPosY#,NewPosZ#
EndIf
EndIf
`Deselect the selected object
If MouseClick()=1 then Delete Object 5000 : SelObj=0
EndIf
Is that not messy?

There's gotta be a better/more efficient way to tell if an object's a light or not...