WARNING : 
○ This is a demo and an incomplete version of the editor for experimenting purpose only, the final product will contain
 additionnal content and more options.
○ This demo has little  to no resources like models, sounds, UI
○ This demo might be, and in fact is, buggy, I know it is not perfect, I will still take in consideration any factual 
 analisys or problem or missing fature you might find

This package contains:
-the classes and scripts used by the editor.
-ready to use prefabs you can copy and alter
-ready to use skeleton of a railEditor you can copy/paste in your project
-Demo scene to try the result and see if you like it


HOW TO USE (globally):
1/ Under the stepsSchema GO, add a Step prefab under any step already here, any way you feel is the better organized. (CAPTURE001.JPG)

2/ Rename the new step if you need to, for readability

3/ configure as you wish this new step by: (CAPTURE003.JPG)
	-Setting a step number (nbStep field)
	-Define if the step has a timer or not: set timerState to "TIMERSTOPPED" for yes and "NOTIMER" for no (timerState field)
	-Setting a timer value (Timer field)
	-Placing the target in your scene (the target is directly under the step GO) (the reticule-like con attached to the step icon by the purple line)
	-Adding NPC groups to be Loaded/activated/deactivated in this step (see NPCs section for complete info) (CAPTURE006.JPG)
	-Adding the step you created in the "Destination list" of the previous step(s) (CurrentDestList array)
		-Setting the type and duration of transition you want between the current step and it's destination step
		-Setting conditions to access the new step: (Conditions and Condition values fields)
			○ Default transition values are the current step GO and default the condition is "TIMEROVER" 
				which is the final state of a running timer
			○ You can put groups of enemies, NPC, backgrounds and set the condition to 
				DEAD, ALIVE, ACTIVE, INACTIVE, depending on the logic you want to put behind it (Conditions and Condition values fields)
			○ You can put multiple conditions for one destination: multiple NPC groups, timer, historic, etc...
			*----------- NB  -----------*
			Destination are set by priority order from highest to lowest: 
				if 2 destinations meet the conditions, the first read is the one executed

		-Setting the type and duration of transition between the two targets (Transition type and transtition time fields)
		*----------- WARNING -----------*
		the transitions from step A to step B are to be set in the step A in the destinations section, 
			BUT the transitions from target A to target B are set in the target B script.
		

4/Add a cover to the step if you want this step to be Time Crisis-like (CAPTURE004.JPG)
	-Add a cover (the cover is just added by putting the prefab under the step in the hierarchy, next to the target(CAPTURE004.JPG)
		*----------- NB  -----------*
		 the cover position is the origin of the Cover GO, the cover object is placed by hand around the cover origin (CAPTURE008.JPG)
	-Cover can be configured: (CAPTURE004.JPG)
		○ Is the player hidden by default? if yes, then hold the key to show, else, hold the key to hide
		○ Does hiding reload your gun?
		○ Duration of the transition between hidden and exposed and back

5/Under the NPCSchema, add a empty GO, you can name it the way you want. ("001" to "011" GameObjects)

6/Add the groups of NPCs you want for the new step ("group07" GameObject)
	-the group is a logical step to allow single or multiple NPCs to be simply used in a single condition

7/Under this group, add the NPCs prefabs : (All the EnemyPrefab GameObjects)
	or your own NPCs with the corresponding script(AllyScript, EnemyScript, etc...) 
	and the HealthManagerScript (or replace it with your own script, and add the methods that with dialog the NPCScripts)

8/If you use the default Enemyscript, you can configure the enemy: (CAPTURE010.JPG)
	Group: the group it belongs to, it is used to test destinations
	CurrentState: the state you set when creating the scene, is the state hte NPC will start as when activated
	DeathState: state in which the NPC will validate the condition when testing the destinations
	currentActiveSnd : sound made when activated
	currentFailSnd : sound made when meeting the death condition
	currentSucceedSnd: sound made when surviving or being activated (used by allies or background NPCs)
	VictimsList: list of GameObjects to chase and attack, in that order
	currentSpeed: moving speed of the NPC
	AttackePlayer: once it's victimsList is empty, will the NPC attack the player or not?
	DelayTime : waiting time before doing anything when activated

9/Add the NPC group to the Step in the fields:
	-LoadedNPCs: load the NPC but won't make it active, it won't attack you or any AllyNPC, but it will be vulnerable to attacks, and it won't pop out of nowhere when needed
	-ActivatedNPCs: the loaded NPCs become active and will attack the allies AND/OR the player in the order set in the list
	-DeactivatedNPCs: if you need NPCs to become inactive (ex:surviving enemies) passed a specific step, you can make them inactive in here
		*----------- WARNING -----------*
		You MUST load an NPC before making it active (in theory, I think I saw some respawning enemies), 
		it forbids respawning enemies (in theory, again, I still have to debug that) 
		when passing by the same step twice (because why not)

NB: 
○ You can add backgroundNPCs elements out of the NPCSchema hierarchy, like that, they won't be impacted by the railEditor logic and you won't need to load them like enemies,
	but you won't be able to use them in destinations as conditions 
