Exemplo n.º 1
0
			protected sealed override void CallbackTransport(shared.EffectEventType eType, shared.Effect cEffect)
			{
				if (null != _cAtom)
				{
					switch (eType)
					{
						case shared.EffectEventType.prepared:
							_cAtom.OnPrepared(cEffect);
							break;
						case shared.EffectEventType.started:
							_cAtom.OnStarted(cEffect);
							break;
						case shared.EffectEventType.stopped:
							_cAtom.OnStopped(cEffect);
							break;
						case shared.EffectEventType.failed:
							_cAtom.OnStopped(cEffect);
							break;
						default:
							throw new Exception("неизвестный тип события:" + eType.ToString()); //TODO LANG
					}
				}
				else
					(new Logger()).WriteWarning("effect:callback:transport: atom is null [" + eType.ToString() + "]");
			}
Exemplo n.º 2
0
    //*************************************************************************************************************************************************
    //Get components
    void Start()
    {
        Root      = transform.Find("Ammo/root");
        Body      = transform.Find("Ammo/root/body");
        Head      = transform.Find("Ammo/root/body/head");
        Tentacles = transform.Find("Ammo/root/body/head/tentacles");

        Left0 = transform.Find("Ammo/root/body/head/tentacles/left center0");
        Left1 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1");
        Left2 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2");
        Left3 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3");
        Left4 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3/left center4");
        Left5 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3/left center4/left center5");
        Left6 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3/left center4/left center5/left center6");
        Left7 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3/left center4/left center5/left center6/left center7");
        Left8 = transform.Find("Ammo/root/body/head/tentacles/left center0/left center1/left center2/left center3/left center4/left center5/left center6/left center7/left center8");

        Right0 = transform.Find("Ammo/root/body/head/tentacles/right center0");
        Right1 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1");
        Right2 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2");
        Right3 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3");
        Right4 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3/right center4");
        Right5 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3/right center4/right center5");
        Right6 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3/right center4/right center5/right center6");
        Right7 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3/right center4/right center5/right center6/right center7");
        Right8 = transform.Find("Ammo/root/body/head/tentacles/right center0/right center1/right center2/right center3/right center4/right center5/right center6/right center7/right center8");

        source = GetComponents <AudioSource>();
        shared = GetComponent <shared>();
        body   = GetComponent <Rigidbody>();
        anm    = GetComponent <Animator>();
    }
Exemplo n.º 3
0
//***********************************************************************************************************************************************************************************************************
// FIND PLAYER FOOD
bool FindPlayerFood()
{
		//Find carnivorous food (looking for a dead creature in range)
		if(regime.Equals("Carnivorous"))
		{
			foreach (GameObject element in manager.creaturesList.ToArray())
			{
				if((element.transform.position-fixedHeadPos).magnitude>scale.z) continue; //not in range
				shared otherCreature= element.GetComponent<shared>(); //Get other creature script
				if(otherCreature.IsDead) { objectTGT=otherCreature.gameObject; vectorTGT = otherCreature.body.worldCenterOfMass; return true; } // meat found
			}
		}
		else
		{
			//Find herbivorous food (looking for trees/details on terrain in range )
			if(manager.terrain)
			{
				//Large creature, look for trees
				if(withersSize>8) 
				{
					Vector3 V1=Vector3.zero;  float i=0; RaycastHit hit;
					while(i<360)
					{
						V1=transform.position+(Quaternion.Euler(0, i, 0)*Vector3.forward*(scale.y*2));
						if(Physics.Linecast(V1+Vector3.up*withersSize, transform.position+Vector3.up*withersSize, out hit, manager.treeLayer))
						{ vectorTGT = hit.point; return true; } //tree found
						else { i++; V1=Vector3.zero; } // not found, continue
					}
				}
				//Look for grass detail
				else
				{
					TerrainData data=manager.terrain.terrainData;
					int res= data.detailResolution, layer=0;
					float x = ((transform.position.x - manager.terrain.transform.position.x) / data.size.z * res), y = ((transform.position.z - manager.terrain.transform.position.z) / data.size.x * res);

					for(layer=0; layer<data.detailPrototypes.Length; layer++)
					{
						if(data.GetDetailLayer( (int) x,  (int) y, 1, 1, layer) [ 0, 0]>0)
						{
							vectorTGT.x=(data.size.x/res)*x+manager.terrain.transform.position.x;
							vectorTGT.z=(data.size.z/res)*y+manager.terrain.transform.position.z;
							vectorTGT.y = manager.terrain.SampleHeight( new Vector3(vectorTGT.x, 0, vectorTGT.z)); 
							objectTGT=null; return true; 
						}
					}
				}
			}
		}

		objectTGT=null; vectorTGT=Vector3.zero; return false; //nothing found...
}
Exemplo n.º 4
0
			protected sealed override void ContainerCallbackTransport(shared.ContainerEventType eType, shared.Effect cEffect)
			{
				(new Logger()).WriteDebug4("container:callback:transport:in:" + eType.ToString());
				if (null != _cAtom)
				{
					if (_cAtom is Container)
					{
						Container cContainer = (Container)_cAtom;
						switch (eType)
						{
							case shared.ContainerEventType.added:
								cContainer.OnEffectAdded(cEffect);
								break;
							case shared.ContainerEventType.prepared:
								cContainer.OnEffectPrepared(cEffect);
								break;
							case shared.ContainerEventType.started:
								cContainer.OnEffectStarted(cEffect);
								break;
							case shared.ContainerEventType.stopped:
								cContainer.OnEffectStopped(cEffect);
								break;
							case shared.ContainerEventType.onscreen:
								cContainer.OnEffectOnScreen(cEffect);
								break;
							case shared.ContainerEventType.offscreen:
								cContainer.OnEffectOffScreen(cEffect);
								break;
							case shared.ContainerEventType.failed:
								cContainer.OnEffectFailed(cEffect);
								break;
							default:
								throw new Exception("неизвестный тип события контейнера:" + eType.ToString()); //TODO LANG
						}
					}
					else
						throw new Exception("эффект не является контейнером:" + _cAtom.ToString() + ". событие контейнера:" + eType.ToString()); //TODO LANG
				}
				else
					(new Logger()).WriteWarning("container:callback:transport: atom is null [" + eType.ToString() + "]");
				(new Logger()).WriteDebug4("container:callback:transport:out:" + eType.ToString());
			}
Exemplo n.º 5
0
Arquivo: comp.cs Projeto: SolaJr/Dino
    //*************************************************************************************************************************************************
    //Get components
    void Start()
    {
        Right_Hips  = transform.Find("Comp/root/pelvis/right leg0");
        Right_Leg   = transform.Find("Comp/root/pelvis/right leg0/right leg1");
        Right_Foot0 = transform.Find("Comp/root/pelvis/right leg0/right leg1/right foot0");
        Right_Foot1 = transform.Find("Comp/root/pelvis/right leg0/right leg1/right foot0/right foot1");
        Left_Hips   = transform.Find("Comp/root/pelvis/left leg0");
        Left_Leg    = transform.Find("Comp/root/pelvis/left leg0/left leg1");
        Left_Foot0  = transform.Find("Comp/root/pelvis/left leg0/left leg1/left foot0");
        Left_Foot1  = transform.Find("Comp/root/pelvis/left leg0/left leg1/left foot0/left foot1");

        Tail0  = transform.Find("Comp/root/pelvis/tail0");
        Tail1  = transform.Find("Comp/root/pelvis/tail0/tail1");
        Tail2  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2");
        Tail3  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3");
        Tail4  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3/tail4");
        Tail5  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3/tail4/tail5");
        Tail6  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3/tail4/tail5/tail6");
        Tail7  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3/tail4/tail5/tail6/tail7");
        Tail8  = transform.Find("Comp/root/pelvis/tail0/tail1/tail2/tail3/tail4/tail5/tail6/tail7/tail8");
        Spine0 = transform.Find("Comp/root/spine0");
        Spine1 = transform.Find("Comp/root/spine0/spine1");
        Spine2 = transform.Find("Comp/root/spine0/spine1/spine2");
        Spine3 = transform.Find("Comp/root/spine0/spine1/spine2/spine3");
        Spine4 = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4");
        Spine5 = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5");
        Arm1   = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/left arm0");
        Arm2   = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/right arm0");
        Neck0  = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/neck0");
        Neck1  = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/neck0/neck1");
        Neck2  = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/neck0/neck1/neck2");
        Neck3  = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/neck0/neck1/neck2/neck3");
        Head   = transform.Find("Comp/root/spine0/spine1/spine2/spine3/spine4/spine5/neck0/neck1/neck2/neck3/head");

        source = GetComponents <AudioSource>();
        shared = GetComponent <shared>();
        body   = GetComponent <Rigidbody>();
        anm    = GetComponent <Animator>();
    }
    //Spawn water particle FX
    void WaterParticleFX(Collider col, ParticleSystem particleFx)
    {
        count += Time.fixedDeltaTime;
        ParticleSystem particle = null; shared creatureScript = null;

        //Check if object has a Rigidbody component
        if (col.transform.root.GetComponent <Rigidbody>())
        {
            //Check his tag (must be a JP Creature with "shared" script attached)
            if (col.transform.root.tag == "Creature")
            {
                creatureScript        = col.transform.root.GetComponent <shared>(); //Get creature script
                creatureScript.waterY = transform.position.y;                       //Set creature current water layer altitude
                if (!creatureScript.IsVisible)
                {
                    return;                                           //Check if creature is visible
                }
                if (particleFx == ripples && count < creatureScript.loop % 5)
                {
                    return;                                                                    //prevent particle overflow
                }
                SkinnedMeshRenderer rend = creatureScript.rend[0];

                //Check if the creature bounds are in contact with the water surface
                if (rend.bounds.Contains(new Vector3(col.transform.position.x, transform.position.y, col.transform.position.z)))
                {
                    //Check if the creature rigidbody are in motion
                    if (!creatureScript.anm.GetInteger("Move").Equals(0) |
                        (creatureScript.CanFly && creatureScript.OnLevitation) | creatureScript.IsJumping | creatureScript.IsAttacking)
                    {
                        if (particleFx == splash && (!creatureScript.IsOnGround | creatureScript.IsJumping))
                        {
                            col.transform.root.GetComponents <AudioSource>()[1].pitch = Random.Range(0.5f, 0.75f);
                            col.transform.root.GetComponents <AudioSource>()[1].PlayOneShot(Largesplash, Random.Range(0.5f, 0.75f));
                        }
                        else
                        {
                            particleFx = ripples;
                        }
                    }
                    else
                    {
                        return;
                    }

                    //The spawn position
                    Vector2 pos = new Vector2(rend.bounds.center.x, rend.bounds.center.z);

                    //Spawn the particle prefab
                    particle = Instantiate(particleFx, new Vector3(pos.x, transform.position.y + 0.01f, pos.y), Quaternion.Euler(-90, 0, 0)) as ParticleSystem;
                    //Set particle size relative to creature size x
                    float size = rend.bounds.size.magnitude / 10;
                    //particle.transform.localScale=new Vector3(size,size, size);
                    particle.transform.localScale = new Vector3(size, size, size);

                    //Destroy particle after 3 sec
                    DestroyObject(particle.gameObject, 3.0f);
                    count = 0;
                }
            }
        }
    }
Exemplo n.º 7
0
		static void EffectVideo_OnCUDASet(shared.Effect cSender, bool nValue)
		{
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:layer:set: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				((BTL.Play.EffectVideo)cEffectCover.oEffect).bCUDA = nValue;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
		}
Exemplo n.º 8
0
		internal void OnEffectStarted(shared.Effect cEffect)
		{
			if (null != EffectStarted)
				EffectStarted(this, ItemGet(cEffect).cEffect);
		}
Exemplo n.º 9
0
		internal void OnEffectFailed(shared.Effect cEffect)
		{
			Item cItem = ItemGet(cEffect);
			if (null != cItem)
			{
				if (null != EffectFailed) // null == cItem  бывает, если удалили элемент плейлиста с помощью PLItemsDelete и он уже отремувлен похоже...
					EffectFailed(this, cItem.cEffect);
				ItemRemove(cItem);
			}
		}
Exemplo n.º 10
0
		void OnStopped(shared.Effect cEffect)
		{
			lock (_oSyncRoot)
			{
				if (_bDone)
					return;
				_bDone = true;
			}
			if (null != Stopped)
				Stopped(this);
		}
Exemplo n.º 11
0
	void FixedUpdate()
	{
		if(!UseManager) return;
		shared creatureScript=null;
		//If creature not found, switch to free camera mode
		if(creaturesList.Count==0) CameraMode=0;
		else if(!creaturesList[selected] | !creaturesList[selected].activeInHierarchy) CameraMode=0;
		else creatureScript=creaturesList[selected].GetComponent<shared>(); //Get creature script

		if(creatureScript)
		{
			//Creature select (Shortcut Key)
			if(Input.GetKeyDown(KeyCode.X)) { if(selected > 0) selected--; else selected=creaturesList.Count-1; }
			else if(Input.GetKeyDown(KeyCode.Y)) { if(selected < creaturesList.Count-1) selected++; else selected=0; }
			
			//Change View (Shortcut Key)
			if(Input.GetKeyDown(KeyCode.C))
			{ if(CameraMode==2) CameraMode=0; else CameraMode++; }
			
			//Use AI (Shortcut Key)
			if(Input.GetKeyDown(KeyCode.I))
			{ if(creatureScript.AI) creatureScript.AI=false; else creatureScript.AI=true; }
		}

		//Prevent camera from going into terrain
		if(terrain && (terrain.SampleHeight(transform.root.position)+terrain.GetPosition().y)>transform.root.position.y-1.0f)
		{
			body.velocity = new Vector3(body.velocity.x, 0, body.velocity.z);
			transform.root.position=new Vector3(transform.root.position.x, (terrain.SampleHeight(transform.root.position)+terrain.GetPosition().y)+1.0f, transform.root.position.z);
		}

		switch(CameraMode)
		{
		//Free
		case 0:
			//Weapon fire exemple
			ExempleFire();

			playerCollider.isTrigger=false;
			if(source.clip==null) source.clip=Wind; else if(source.clip==Wind)
			{
				if(source.isPlaying) { source.volume=body.velocity.magnitude/128; source.pitch=source.volume; }
				else source.PlayOneShot(Wind);
			 }

			Vector3 dir=Vector3.zero; float y=0;
			if(Input.GetKey(KeyCode.LeftShift)) body.mass=0.025f; else body.mass=0.1f;  body.drag=1.0f;
			if(Cursor.lockState==CursorLockMode.Locked | Input.GetKey(KeyCode.Mouse2))
			{
				vx=vx+Input.GetAxis("Mouse X")*sensivity; //rotate cam X axe
				vy=Mathf.Clamp(InvertYAxis?vy+Input.GetAxis("Mouse Y")*sensivity:vy-Input.GetAxis("Mouse Y")*sensivity, -89.9f, 89.9f); //rotate cam Y axe
				transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.AngleAxis(vx, Vector3.up)*Quaternion.AngleAxis(vy, Vector3.right), 0.1f);
			}
			
			if(Input.GetKey(KeyCode.Space)) y=1; else if(Input.GetKey(KeyCode.LeftControl)) y=-1; else y=0;
			dir=transform.rotation*new Vector3(Input.GetAxis("Horizontal"), y, Input.GetAxis("Vertical")); //move
			body.AddForce(dir*(transform.root.position-(transform.root.position+dir)).magnitude);
		break;
		//Follow camera
		case 1:
			playerCollider.isTrigger=true;
			body.mass=1.0f; body.drag=10.0f; float size = creatureScript.withersSize;
			if(Cursor.lockState==CursorLockMode.Locked | Input.GetKey(KeyCode.Mouse2))
			{
				if(Input.GetKey(KeyCode.Mouse1))
				{
					vx=creaturesList[selected].transform.eulerAngles.y; //lock camera to creature angle
					if(creatureScript.OnLevitation)
					{ vy=Mathf.Clamp(Mathf.Lerp(vy, creatureScript.anm.GetFloat("Pitch")*90, 0.01f), -45f, 90f); }//pitch flying creature with camera axe
					 else
					{ vy=Mathf.Clamp(InvertYAxis?vy-Input.GetAxis("Mouse Y")*sensivity : vy+Input.GetAxis("Mouse Y")*sensivity, -90f, 90f); } //rotate cam Y axe
				}
				else if(!Input.GetKey(KeyCode.Mouse2) | Cursor.lockState!=CursorLockMode.Locked)
				{
					vx=vx+Input.GetAxis("Mouse X")*sensivity; //rotate cam X axe
					vy=Mathf.Clamp(InvertYAxis?vy-Input.GetAxis("Mouse Y")*sensivity:vy+Input.GetAxis("Mouse Y")*sensivity, -90f, 90f); //rotate cam Y axe
				}
			}
			vz=Mathf.Clamp(vz-Input.GetAxis("Mouse ScrollWheel")*10, size, size*32f); //zoom cam Z axe
			transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(vy, vx, 0.0f), 0.1f);
			Vector3 pos=((creaturesList[selected].transform.root.position+Vector3.up*size*1.5f)-transform.root.position)-transform.forward*vz;
			body.AddForce(pos*128f);
		break;
		// POV camera
		case 2:
			playerCollider.isTrigger=true;
			size = creatureScript.withersSize;
			transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation((creaturesList[selected].transform.root.position+Vector3.up*size*1.5f)-transform.root.position), 0.1f);
		break;
		default: CameraMode=0; break;
		}
	}
Exemplo n.º 12
0
		void Atom.IContainer.OnEffectFailed(shared.Effect cEffect)
		{
			this.OnEffectFailed(cEffect);
		}
Exemplo n.º 13
0
		void OnPrepared(shared.Effect cEffect)
		{
			if (null != Prepared)
			{
				(new Logger()).WriteDebug3("before Prepared(this)");
				Prepared(this);
				(new Logger()).WriteDebug4("after Prepared(this)");
			}
			else
				(new Logger()).WriteDebug3("empty Prepared");
		}
Exemplo n.º 14
0
	void OnGUI ()
	{
		if(!UseManager) return;

		float sw =Screen.width, sh= Screen.height;

		shared creatureScript=null;
		if(creaturesList.Count>0 && creaturesList[selected] && creaturesList[selected].activeInHierarchy)
			creatureScript=creaturesList[selected].GetComponent<shared>();  //Get creature script
		
		GUIStyle style = new GUIStyle("box"); style.fontSize=16;
		if(Cursor.lockState==CursorLockMode.None)
		{
			//Show creature info on toolbar & Camera mode select
			if(creatureScript&&CameraMode!=0)
			{
				GUI.Box(new Rect(0, 0, sw, 50), creaturesList[selected].name);
				GUI.color=Color.yellow; if(GUI.Button(new Rect(0,5, (sw/16)-4, 20), "Free")) CameraMode=0;
				if(CameraMode==1) GUI.color=Color.green; if(GUI.Button(new Rect((sw/16)*1.5f, 5, (sw/16)-4, 20), "Follow")) CameraMode=1; GUI.color=Color.yellow;
				if(CameraMode==2) GUI.color=Color.green; if(GUI.Button(new Rect((sw/16)*3.0f, 5, (sw/16)-4, 20), "POV")) CameraMode=2;
			}
			else
			{
				GUI.Box(new Rect(0, 0, sw, 50), "", style);
				if(creatureScript)
				{
					GUI.color=Color.green; GUI.Button(new Rect(0,5, (sw/16)-4, 20), "Free"); GUI.color=Color.yellow;
					if(GUI.Button(new Rect((sw/16)*1.5f, 5, (sw/16)-4, 20), "Follow")) CameraMode=1;
					if(GUI.Button(new Rect((sw/16)*3.0f, 5, (sw/16)-4, 20), "POV")) CameraMode=2; 
				}
			}
			GUI.color=Color.white;

			Cursor.visible = true;
			//Toolbar tabs
			if(!ShowGUI) GUI.Box(new Rect(0, 0, sw, 50), ""); 
			string[] toolbarStrings = new string[] {"File", "Creatures", "Options", "Help"};
			GUI.color=Color.yellow; toolBarTab = GUI.Toolbar(new Rect(0, 30, sw, 20), toolBarTab, toolbarStrings); GUI.color=Color.white;

			switch(toolBarTab)
			{
			//File
			case 0: GUI.Box (new Rect(0, 50, sw, sh-50), "", style);
				if(GUI.Button(new Rect((sw/2)-60, (sh/2)-35, 120, 30), "Reset")) SceneManager.LoadScene(0); //Reset				
				if(GUI.Button (new Rect((sw/2)-60, (sh/2)+5, 120, 30), "Quit")) Application.Quit(); //Quit
			break;
			//Creatures
			case 1:
			if(creatureScript)
			{
				// Creature box
				GUI.Box (new Rect(0, 50, sw*0.25f, (sh*0.75f)-50),"");

				// Creature name - rename field
				string rename=creaturesList[selected].name;
				creaturesList[selected].name=GUI.TextField(new Rect(25, 50, sw*0.25f-25, 25), rename, style);

				//Delete button
				if(GUI.Button (new Rect(0, 50, 25, 25), "X"))
				{
					Destroy(creaturesList[selected].gameObject);  creaturesList.RemoveAt(selected);
					if(selected>0) selected--; else if(creaturesList.Count>0) selected=creaturesList.Count-1; else return;
				}

				//Browse Creatures
				if(browser)
				{
					if(GUI.Button (new Rect(0, 75, (sw*0.25f), 25), "Close Browser" )) browser=false;
					GUI.Box (new Rect(0, 100, sw*0.25f, (sh*0.75f)-100),"Creatures : "+creaturesList.Count);
					scroll1 = GUI.BeginScrollView(new Rect(0, 130, sw*0.25f, (sh*0.75f)-140), scroll1, new Rect(0, 0, 270, creaturesList.Count*40), false, true);

					int end_i=creaturesList.Count, start=Mathf.RoundToInt(scroll1.y/40);
					end_i=Mathf.Clamp(end_i, start , start+Mathf.RoundToInt((sh*0.75f)/40));
		
					for(int i=start; i<end_i; i++)
					{
						float line =	40*i;
						//green light for current selected creature
						if(selected!=i) GUI.color=Color.gray; else GUI.color=Color.white;
						//draw creature array num
						GUI.Label (new Rect(5, line, sw*0.25f-30, 25), (i+1)+". " );
						// delete button
						if(GUI.Button (new Rect(30, line, 20, 20), "X" ))
						{
							if(i<=selected && selected>0 | selected==creaturesList.Count-1) selected--;
							Destroy(creaturesList[i].gameObject);  creaturesList.RemoveAt(i); return;
						}
						//button show creature name/select creature
						if(GUI.Button (new Rect(50, line, 140, 20), creaturesList[i].name )) { selected=i; CameraMode=1; }
						if(GUI.Button (new Rect(190, line, 40, 20), "Edit" )) { selected=i;  browser=false; }
						//get creature script
						shared Script= creaturesList[i].gameObject.GetComponent<shared>();
						//show current creature behavior
						GUI.Label (new Rect(235, line, sw*0.25f-30, 25), Script.behavior+"  "+Script.behaviorCount);
						//browser health bar
						Rect bar= new Rect(0, 0, 0.1f, 0.1f);
						GUI.color=Color.black; GUI.DrawTextureWithTexCoords(new Rect(30, line+22, 50, 4), icons, bar, false);
						GUI.DrawTextureWithTexCoords(new Rect(85, line+22, 50, 4), icons, bar, false);
						GUI.color=Color.green; GUI.DrawTextureWithTexCoords(new Rect(30, line+22, Script.Health/2, 4), icons, bar, false); 
						GUI.color=Color.yellow; GUI.DrawTextureWithTexCoords(new Rect(85,line+22, Script.Food/2, 4), icons, bar, false);
						if(!Script.CanSwim)
						{
							GUI.color=Color.black; GUI.DrawTextureWithTexCoords(new Rect(140, line+22, 50, 4), icons, bar, false);
							GUI.DrawTextureWithTexCoords(new Rect(195, line+22, 50, 4), icons, bar, false);
							GUI.color=Color.cyan; GUI.DrawTextureWithTexCoords(new Rect(140, line+22, Script.Water/2, 4), icons, bar, false); 
							GUI.color=Color.gray; GUI.DrawTextureWithTexCoords(new Rect(195,line+22, Script.Fatigue/2, 4), icons, bar, false); 
						}
					}
					GUI.EndScrollView();
				}
				else
				{
					//Start browse
					if(GUI.Button (new Rect((sw*0.25f)/4, 75, (sw*0.25f)/2, 20), "Browse : "+(selected+1)+"/"+creaturesList.Count )) browser=true;

					//Creature select
					if(GUI.Button (new Rect(0, 75,  (sw*0.25f)/4, 20), "<<")) 	{ if(selected>0) selected--; else selected=creaturesList.Count-1; } 
					if(GUI.Button (new Rect(((sw*0.25f)/4)*3, 75, (sw*0.25f)/4, 20), ">>")) { if(selected < creaturesList.Count-1) selected++; else selected=0; }

					scroll1 = GUI.BeginScrollView(new Rect(0, 110, sw*0.25f, (sh*0.75f)-110), scroll1, new Rect(0, 0, 0, 430), false, true);

					//AI on/off
					if(creatureScript.AI)
					{
						GUI.color=Color.gray; if(GUI.Button (new Rect(sw*0.25f/2, 0, sw*0.25f/2-20, 25), "Player")) creatureScript.SetAI(false);
						GUI.color=Color.green; GUI.Box (new Rect(10, 0, sw*0.25f/2-10, 25), "A.I. : "+creatureScript.behavior );
					}
					else
					{
						GUI.color=Color.green; GUI.Box (new Rect(sw*0.25f/2, 0, sw*0.25f/2-20, 25), "Player");
						GUI.color=Color.gray; if(GUI.Button (new Rect(10, 0, sw*0.25f/2-10, 25), "A.I." )) creatureScript.SetAI(true);
					}

					GUI.color=Color.white;

					//Model materials
					int body= creatureScript.BodySkin.GetHashCode();
					int eyes= creatureScript.EyesSkin.GetHashCode();
					if(GUI.Button (new Rect(10, 30, sw*0.25f-30, 25), "Body Skin : "+creatureScript.BodySkin))
					{ if(body<2) body++; else body=0; creatureScript.SetMaterials(body, eyes); }
				
					if(GUI.Button (new Rect(10, 60, sw*0.25f-30, 25), "Eyes Skin : "+creatureScript.EyesSkin))
					{ if(eyes<15)eyes++; else eyes=0; creatureScript.SetMaterials(body, eyes); }

					//Model scale
					float Scale=creaturesList[selected].transform.localScale.x;
						GUI.Box(new Rect(10, 90, sw*0.25f-30, 25), "Scale : "+Mathf.Round(Scale*100)/100);
					Scale=GUI.HorizontalSlider(new Rect(10, 110, sw*0.25f-30, 25), Scale, 0.1f, 1.0f);
					if(Scale!=creaturesList[selected].transform.localScale.x) creaturesList[selected].SendMessage("SetScale", Mathf.Round(Scale*100)/100);
					//Animation speed
					float Speed= creatureScript.AnimSpeed;
					GUI.Box(new Rect(10, 125, sw*0.25f-30, 25), "Animation Speed : "+Mathf.Round(Speed*100)/100);
					creatureScript.AnimSpeed=GUI.HorizontalSlider(new Rect(10, 145, sw*0.25f-30, 25), Speed, 0.0f, 2.0f);
					//Health
					float Health=creatureScript.Health;
					GUI.Box(new Rect(10, 160, sw*0.25f-30, 25), "Health : "+Mathf.Round(Health*10)/10);
					Health=GUI.HorizontalSlider(new Rect(10, 180, sw*0.25f-30, 25), creatureScript.Health, 0, 100); creatureScript.Health =Health;
					//Food
					float Food=creatureScript.Food;
					GUI.Box(new Rect(10, 200, sw*0.25f-30, 20), "Food : "+Mathf.Round(Food*10)/10);
					Food=GUI.HorizontalSlider(new Rect(10, 220, sw*0.25f-30, 20), creatureScript.Food, 0, 100); creatureScript.Food =Food;

					if(!creatureScript.CanSwim)
					{
						//Water
						float Water=creatureScript.Water;
							GUI.Box(new Rect(10, 240, sw*0.25f-30, 20), "Water : "+Mathf.Round(Water*10)/10);
						Water=GUI.HorizontalSlider(new Rect(10, 260, sw*0.25f-30, 20), creatureScript.Water, 0, 100); creatureScript.Water =Water;
						//Fatigue
						float Fatigue=creatureScript.Fatigue;
						GUI.Box(new Rect(10, 280, sw*0.25f-30, 20), "Fatigue : "+Mathf.Round(Fatigue*10)/10);
						Fatigue=GUI.HorizontalSlider(new Rect(10, 300, sw*0.25f-30, 20), creatureScript.Fatigue, 0, 100); creatureScript.Fatigue =Fatigue;
					}
					else
					{
						GUI.Box(new Rect(10, 240, sw*0.25f-30, 20), "Water : N/A");
						GUI.Box(new Rect(10, 280, sw*0.25f-30, 20), "Fatigue : N/A");
					}

					//Damage
					float Damage=creatureScript.DamageMultiplier;
						GUI.Box(new Rect(10, 320, sw*0.25f-30, 20), "Damages X"+Mathf.Round(creatureScript.DamageMultiplier*100)/100);
					Damage=GUI.HorizontalSlider(new Rect(10, 340, sw*0.25f-30, 20), creatureScript.DamageMultiplier, 1, 10); creatureScript.DamageMultiplier=Damage;
					//Armor
					float Armor=creatureScript.ArmorMultiplier;
						GUI.Box(new Rect(10, 360, sw*0.25f-30, 20), "Armor X"+Mathf.Round(creatureScript.ArmorMultiplier*100)/100);
					Armor=GUI.HorizontalSlider(new Rect(10, 380, sw*0.25f-30, 20), creatureScript.ArmorMultiplier, 1, 10); creatureScript.ArmorMultiplier=Armor;

					GUI.EndScrollView();

				}
			}
			else GUI.Box (new Rect(0, 50, sw*0.25f, (sh*0.75f)-50), "None", style);


			//Add new creature
			GUI.color=Color.yellow;
			if(addCreatureTab==-2)
			{
				if(GUI.Button (new Rect(0, sh*0.75f, sw*0.25f, 25), "")) addCreatureTab=-1;
				GUI.Box(new Rect(0, sh*0.75f, sw/4, sh/4), "Add a new creature", style);
			}
			else if(addCreatureTab==-1)
			{
				if(GUI.Button (new Rect(0, sh*0.75f, sw*0.25f, 25), "")) addCreatureTab=-2;
				GUI.Box(new Rect(0, sh*0.75f, sw/4, sh/4), "Cancel", style);
				GUI.Box(new Rect(sw/4, 50, sw*0.75f, sh-50), "Select a specie", style);
				scroll2 = GUI.BeginScrollView(new Rect(sw/4, sh/4, sw*0.75f, sh*0.75f), scroll2, new Rect(0, 0, 740, 290));

				//Volume I
				GUI.color=Color.yellow; GUI.Box(new Rect(25, 0, 140, 25), "Vol. I", style);
					CheckCollection("Ankylosaurus", new Rect(25, 30, 140, 20));
					CheckCollection("Brachiosaurus", new Rect(25, 50, 140, 20));
					CheckCollection("Compsognathus", new Rect(25, 70, 140, 20));
					CheckCollection("Dilophosaurus", new Rect(25, 90, 140, 20));
					CheckCollection("Dimetrodon", new Rect(25, 110, 140, 20));
					CheckCollection("Oviraptor", new Rect(25, 130, 140, 20));
					CheckCollection("Parasaurolophus", new Rect(25, 150, 140, 20));
					CheckCollection("Pteranodon", new Rect(25, 170, 140, 20));
					CheckCollection("Spinosaurus", new Rect(25, 190, 140, 20));
					CheckCollection("Stegosaurus", new Rect(25, 210, 140, 20));
					CheckCollection("Triceratops", new Rect(25, 230, 140, 20));
					CheckCollection("Tyrannosaurus Rex", new Rect(25, 250, 140, 20));
					CheckCollection("Velociraptor", new Rect(25, 270, 140, 20));
				//Volume II
				GUI.color=Color.yellow; GUI.Box(new Rect(170, 0, 140, 25), "Vol. II", style);
					CheckCollection("Argentinosaurus", new Rect(170, 30, 140, 20));
					CheckCollection("Baryonyx", new Rect(170, 50, 140, 20));
					CheckCollection("Carnotaurus", new Rect(170, 70, 140, 20));
					CheckCollection("Dimorphodon", new Rect(170, 90, 140, 20));
					CheckCollection("Gallimimus", new Rect(170, 110, 140, 20));
					CheckCollection("Iguanodon", new Rect(170, 130, 140, 20));
					CheckCollection("Kentrosaurus", new Rect(170, 150, 140, 20));
					CheckCollection("Ouranosaurus", new Rect(170, 170, 140, 20));
					CheckCollection("Pachycephalosaurus", new Rect(170, 190, 140, 20));
					CheckCollection("Protoceratops", new Rect(170, 210, 140, 20));
					CheckCollection("Quetzalcoatlus", new Rect(170, 230, 140, 20));
					CheckCollection("Styracosaurus", new Rect(170, 250, 140, 20));
					CheckCollection("Troodon", new Rect(170, 270, 140, 20));
				//Volume III
				GUI.color=Color.yellow; GUI.Box(new Rect(315, 0, 140, 25), "Vol. III", style);
					CheckCollection("Acrocanthosaurus", new Rect(315, 30, 140, 20));
					CheckCollection("Allosaurus", new Rect(315, 50, 140, 20));
					CheckCollection("Amargasaurus", new Rect(315, 70, 140, 20));
					CheckCollection("Apatosaurus", new Rect(315, 90, 140, 20));
					CheckCollection("Archaeopteryx", new Rect(315, 110, 140, 20));
					CheckCollection("Ceratosaurus", new Rect(315, 130, 140, 20));
					CheckCollection("Corythosaurus", new Rect(315, 150, 140, 20));
					CheckCollection("Ornithocheirus", new Rect(315, 170, 140, 20));
					CheckCollection("Pachyrhinosaurus", new Rect(315, 190, 140, 20));
					CheckCollection("Postosuchus", new Rect(315, 210, 140, 20));
					CheckCollection("Proganochelys", new Rect(315, 230, 140, 20));
					CheckCollection("Psittacosaurus", new Rect(315, 250, 140, 20));
					CheckCollection("Therizinosaurus", new Rect(315, 270, 140, 20));
				//Volume IV
				GUI.color=Color.yellow; GUI.Box(new Rect(460, 0, 140, 25), "Vol. IV", style);
					CheckCollection("Ammonite", new Rect(460, 30, 140, 20));
					CheckCollection("Anomalocaris", new Rect(460, 50, 140, 20));
					CheckCollection("Archelon", new Rect(460, 70, 140, 20));
					CheckCollection("Dunkleosteus", new Rect(460, 90, 140, 20));
					CheckCollection("Giant Orthocone", new Rect(460, 110, 140, 20));
					CheckCollection("Helicoprion", new Rect(460, 130, 140, 20));
					CheckCollection("Ichthyosaur", new Rect(460, 150, 140, 20));
					CheckCollection("Leedsichthys", new Rect(460, 170, 140, 20));
					CheckCollection("Mosasaurus", new Rect(460, 190, 140, 20));
					CheckCollection("Onchopristis", new Rect(460, 210, 140, 20));
					CheckCollection("Sarcosuchus", new Rect(460, 230, 140, 20));
					CheckCollection("Styxosaurus", new Rect(460, 250, 140, 20));
					CheckCollection("Xenacanthus", new Rect(460, 270, 140, 20));
				//Volume V 
				GUI.color=Color.yellow; GUI.Box(new Rect(605, 0, 140, 25), "Vol. V", style);
					CheckCollection("Arthropleura", new Rect(605, 30, 140, 20));
					CheckCollection("Coelacanth", new Rect(605, 50, 140, 20));
					CheckCollection("Cynognathus", new Rect(605, 70, 140, 20));
					CheckCollection("Diplocaulus", new Rect(605, 90, 140, 20));
					CheckCollection("Euphoberia", new Rect(605, 110, 140, 20));
					CheckCollection("Koolasuchus", new Rect(605, 130, 140, 20));
					CheckCollection("Meganeuropsis", new Rect(605, 150, 140, 20));
					CheckCollection("Megazostrodon", new Rect(605, 170, 140, 20));
					CheckCollection("Nephila Jurassica", new Rect(605, 190, 140, 20));
					CheckCollection("Palaeocharinus", new Rect(605, 210, 140, 20));
					CheckCollection("Proceratocephala", new Rect(605, 230, 140, 20));
					CheckCollection("Pulmonoscorpius", new Rect(605, 250, 140, 20));
					CheckCollection("Stethacanthus", new Rect(605, 270, 140, 20));
				GUI.EndScrollView();
			}
			else
			{
				if(GUI.Button (new Rect(0, sh*0.75f, sw*0.25f, 25), "")) { addCreatureTab=-1; return; }
				GUI.Box(new Rect(0, sh*0.75f, sw/4, sh/4), "Select Creature : "+CollectionList[addCreatureTab].name, style);
				GUI.color=Color.white;
				scroll2 = GUI.BeginScrollView(new Rect(0,  (sh*0.75f)+40, sw*0.25f, (sh*0.25f)-40), scroll2, new Rect(0, 0, 0, 130), false, true);

				//AI
				GUI.Box(new Rect(10, 0, sw*0.25f-30, 25), "");
				spawnAI= GUI.Toggle (new Rect(18, 0, 120, 25), spawnAI, " Spawn with AI ");
				//Random
				GUI.Box(new Rect(10, 30, sw*0.25f-30, 25), "");
				rndSkin= GUI.Toggle (new Rect(18, 30, 100, 25), rndSkin, " Random skin");
				//Random size
				GUI.Box(new Rect(10, 60, sw*0.25f-30, 25), "");
				rndSize= GUI.Toggle (new Rect(18, 60, 100, 25), rndSize, " Random size");
				if(rndSize)
				{
						if(GUI.Button(new Rect(130, 60, sw*0.25f-150, 25), "Span : "+rndSizeSpan.ToString()))
					{ if(rndSizeSpan<5) rndSizeSpan++; else rndSizeSpan=1; }
				}
				//Random setting
				GUI.Box(new Rect(10, 90, sw*0.25f-30, 25), "");
				rndSetting= GUI.Toggle (new Rect(18, 90, sw*0.25f-30, 25), rndSetting, " Random health settings");

				GUI.EndScrollView();

				//Spawn new creature
				if(GUI.Button (new Rect(sw*0.6f, sh/2, 80, 60), "SPAWN !"))
				{
					GameObject spawncreature = Instantiate(CollectionList[addCreatureTab] ,transform.position+transform.forward*10, Quaternion.identity);
					shared script=spawncreature.GetComponent<shared>();

					if(!spawnAI) CameraMode=1; script.AI=spawnAI;
					if(rndSkin) { script.SetMaterials(Random.Range(0, 3), Random.Range(0, 16)); }
					if(rndSize) { script.SetScale( 0.5f+Random.Range((float) rndSizeSpan/-10, (float) rndSizeSpan/10)); } else script.SetScale(0.5f);
					if(rndSetting)
					{
						script.Health =Random.Range(25,100); script.Fatigue =Random.Range(25,100);
						script.Food =Random.Range(25,100); script.Water =Random.Range(25,100);
					}

						spawncreature.name=CollectionList[addCreatureTab].name;
					creaturesList.Add(spawncreature.gameObject); selected = creaturesList.IndexOf(spawncreature.gameObject); //add creature to creature list
				}
			}
			break;
			//Options
			case 2: 
			GUI.Box (new Rect(0, 50, sw, sh-50), "Options", style);
			//Screen
			GUI.Box(new Rect((sw/2)-225, (sh/2)-110, 150, 220), "Screen", style);
			bool fullScreen=Screen.fullScreen; fullScreen= GUI.Toggle (new Rect((sw/2)-220, (sh/2)-80, 140, 20), fullScreen, " Fullscreen");
			if(fullScreen!=Screen.fullScreen) Screen.fullScreen=!Screen.fullScreen;
			ShowFPS= GUI.Toggle (new Rect((sw/2)-220, (sh/2)-40, 140, 20), ShowFPS, " Show Fps");
			ShowGUI= GUI.Toggle (new Rect((sw/2)-220, (sh/2), 140, 20), ShowGUI, " Show GUI");
			//Controls
			GUI.Box(new Rect((sw/2)-75, (sh/2)-110, 150, 220), "Controls", style);
			InvertYAxis = GUI.Toggle (new Rect((sw/2)-70, (sh/2)-80, 140, 20), InvertYAxis, " Invert Y Axe");
			GUI.Label(new Rect((sw/2)-70, (sh/2)-40, 140, 20), "Sensivity");
			sensivity=GUI.HorizontalSlider(new Rect((sw/2)-70, (sh/2), 140, 20), sensivity, 0.1f, 10.0f);
			//Creatures
			GUI.Box(new Rect((sw/2)+75, (sh/2)-110, 150, 220), "Creatures", style);
			UseIK= GUI.Toggle (new Rect((sw/2)+80, (sh/2)-80, 140, 20), UseIK, " Use IK");
			UseRaycast= GUI.Toggle (new Rect((sw/2)+80, (sh/2)-40, 140, 20), UseRaycast, " Use Raycast");
			RealtimeGame= GUI.Toggle (new Rect((sw/2)+80, (sh/2), 140, 20), RealtimeGame, " Realtime Game");
			break;
			//Help
			case 3: GUI.Box (new Rect(0, 50, sw, sh-50), "Controls", style);	
				GUI.DrawTexture(new Rect(0, 50, sw, sh-50), helpscreen); 
			break;
			}
		} else Cursor.visible = false;


		if(creatureScript)
		{
			if(ShowGUI)
			{
				// Health bar
				if(CameraMode==1)
				{
					Rect ico1 = new Rect(0, 0.5f, 0.5f, 0.5f), ico2 = new Rect(0.5f, 0.5f, 0.5f, 0.5f), ico3 = new Rect(0.5f, 0, 0.5f, 0.5f), ico4 =new Rect(0, 0, 0.5f, 0.5f), bar=new Rect(0, 0, 0.1f, 0.1f);
					GUI.color=Color.white; //Icons
					GUI.DrawTextureWithTexCoords(new Rect(sw/4, sh/1.1f, sw/48, sw/48), icons, ico1, true);  //health icon
					GUI.DrawTextureWithTexCoords(new Rect(sw/2, sh/1.1f, sw/48, sw/48), icons, ico2, true); //food icon
					if(!creatureScript.CanSwim)
					{
						GUI.DrawTextureWithTexCoords(new Rect(sw/2, sh/1.05f, sw/48, sw/48), icons, ico3, true); //water icon
						GUI.DrawTextureWithTexCoords(new Rect(sw/4, sh/1.05f, sw/48, sw/48), icons, ico4, true); //sleep icon
					}
					GUI.color=Color.black; //bar background
					GUI.DrawTextureWithTexCoords(new Rect(sw/3.5f, sh/1.09f, (sw*0.002f)*100, sh/100), icons, bar, false);
					GUI.DrawTextureWithTexCoords(new Rect(sw/1.85f, sh/1.09f, (sw*0.002f)* 100, sh/100), icons, bar, false);
					if(!creatureScript.CanSwim)
					{
						GUI.DrawTextureWithTexCoords(new Rect(sw/1.85f, sh/1.04f, (sw*0.002f)*100, sh/100), icons, bar, false); 
						GUI.DrawTextureWithTexCoords(new Rect(sw/3.5f, sh/1.04f, (sw*0.002f)*100, sh/100), icons, bar, false);
					}
					GUI.color=Color.green; //health bar
					GUI.DrawTextureWithTexCoords(new Rect(sw/3.5f, sh/1.09f, (sw*0.002f)*creatureScript.Health, sh/100), icons, bar, false);
					GUI.color=Color.yellow; //food bar
					GUI.DrawTextureWithTexCoords(new Rect(sw/1.85f, sh/1.09f, (sw*0.002f)*creatureScript.Food, sh/100), icons, bar, false);
					if(!creatureScript.CanSwim)
					{
						GUI.color=Color.cyan; //water bar
						GUI.DrawTextureWithTexCoords(new Rect(sw/1.85f, sh/1.04f, (sw*0.002f)*creatureScript.Water, sh/100), icons, bar, false);
						GUI.color=Color.gray; //sleep bar
						GUI.DrawTextureWithTexCoords(new Rect(sw/3.5f, sh/1.04f, (sw*0.002f)*creatureScript.Fatigue, sh/100), icons, bar, false);
					}
				}
			}
		}

		//Fps
		GUI.color=Color.white;
		if(ShowFPS) GUI.Label(new Rect(sw-60, 1, 55, 20), "Fps : "+ fps);

		//Messages
		if(message!=0)
		{
			count++;
			if(message==1) GUI.Box(new Rect((sw/2)-120, sh/2, 240, 25), "Nothing to eat or drink...", style);
			else if(message==2)  GUI.Box(new Rect((sw/2)-200, sh/2, 400, 25), "AI and IK features require 'JP Script Extension Asset' ", style);
			if(count==512) { count=0; message=0; }
		}
	}
Exemplo n.º 15
0
		void Atom.IContainer.OnEffectStopped(shared.Effect cEffect)
		{
			this.OnEffectStopped(cEffect);
		}
Exemplo n.º 16
0
		static bool EffectVideo_OnCUDAGet(shared.Effect cSender)
		{
			bool bRetVal = false;
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:layer:get: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				bRetVal = ((BTL.Play.EffectVideo)cEffectCover.oEffect).bCUDA;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return bRetVal;
		}
Exemplo n.º 17
0
		static void EffectVideo_OnDockSet(shared.Effect cSender, helpers.Dock cDock)
		{
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:dock:set: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				BTL.Play.EffectVideo cEffectVideoBTL;
				if (cEffectCover.oEffect is BTL.Play.EffectVideoAudio)
					cEffectVideoBTL = (BTL.Play.EffectVideo)(BTL.Play.EffectVideoAudio)cEffectCover.oEffect;
				else
					cEffectVideoBTL = (BTL.Play.EffectVideo)cEffectCover.oEffect;
				cEffectVideoBTL.cDock = cDock;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
		}
Exemplo n.º 18
0
		public static ulong Container_OnSumDurationGet(shared.Effect cSender)
		{
			ulong nRetVal = ulong.MaxValue;
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:sumduration:get: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				nRetVal = ((BTL.IContainer)cEffectCover.oEffect).nSumDuration;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return nRetVal;
		}
Exemplo n.º 19
0
		static bool Dispose(shared.Effect cEffect)
		{
			bool bRetVal = false;
			try
			{
				EffectCover cEffectCover = null;
				lock (_ahEffects)
				{
					if (_ahEffects.ContainsKey(cEffect))
					{
						cEffectCover = _ahEffects[cEffect];
						if (null == cEffectCover)
							(new Logger()).WriteDebug2("effect:dispose: is null [hc:" + cEffect.GetHashCode() + "]");
					}
					else if(_ahEffectsRemoved.ContainsKey(cEffect))
						bRetVal = true;
				}
				if (null != cEffectCover)
				{
					cEffectCover.Dispose();
					bRetVal = true;
				}
				else if (!bRetVal)
					(new Logger()).WriteNotice("dispose: указанный эффект не зарегистрирован [hc:" + cEffect.GetHashCode() + "]");   //TODO LANG    // не ошибка, т.к. он просто удален в GC
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return bRetVal;
		}
Exemplo n.º 20
0
		static bool Stop(shared.Effect cEffect)
		{
			bool bRetVal = false;
			try
			{
				EffectCover cEffectCover = null;
				lock (_ahEffects)
				{
					if (_ahEffects.ContainsKey(cEffect))
						cEffectCover = _ahEffects[cEffect];
				}
				if (null != cEffectCover)
				{
					if (BTL.EffectStatus.Stopped != cEffectCover.eStatus)
					{
						cEffectCover.Stop();
						bRetVal = true;
					}
					else
						(new Logger()).WriteDebug2("stop: указанный эффект уже остановлен [hc:" + cEffect.GetHashCode() + "]");
				}
				else
					throw new Exception("stop: указанный эффект не зарегистрирован [hc:" + cEffect.GetHashCode() + "]"); //TODO LANG
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return bRetVal;
		}
Exemplo n.º 21
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="attribute"></param>
 public TreeNode(shared.Attribute attribute)
 {
     this.Attribute = attribute;
     this.Childs = new List<TreeNode>();
 }
Exemplo n.º 22
0
		static helpers.Area EffectVideo_OnAreaGet(shared.Effect cSender)
		{
			helpers.Area stRetVal = helpers.Area.stEmpty;
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:area:get: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				stRetVal = ((BTL.Play.EffectVideo)cEffectCover.oEffect).stArea;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return stRetVal;
		}
Exemplo n.º 23
0
		void Atom.IContainer.OnEffectOffScreen(shared.Effect cEffect)
		{
			this.OnEffectOffScreen(cEffect);
		}
Exemplo n.º 24
0
		static void EffectVideo_OnAreaSet(shared.Effect cSender, helpers.Area stArea)
		{
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effect:area:set: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				if (helpers.Area.stEmpty != stArea)
				{
					BTL.Play.EffectVideo cEffectVideoBTL;
					if (cEffectCover.oEffect is BTL.Play.EffectVideoAudio)
						cEffectVideoBTL = (BTL.Play.EffectVideo)(BTL.Play.EffectVideoAudio)cEffectCover.oEffect;
					else
						cEffectVideoBTL = (BTL.Play.EffectVideo)cEffectCover.oEffect;
					cEffectVideoBTL.stArea = stArea;
				}
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
		}
Exemplo n.º 25
0
		static private Status StatusTranslate(shared.Status eStatus)
		{
			switch (eStatus)
			{
				case shared.Status.Error:
					return Status.Error;
				case shared.Status.Idle:
					return Status.Idle;
				case shared.Status.Prepared:
					return Status.Prepared;
				case shared.Status.Started:
					return Status.Started;
				case shared.Status.Stopped:
					return Status.Stopped;
			}
			return Status.Unknown;
		}
Exemplo n.º 26
0
		static byte[] EffectVideoAudio_OnChannelGet(shared.Effect cSender)
		{
			byte[] aRetVal = null;
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effectvideoaudio:channels:get: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				aRetVal = ((BTL.Play.EffectVideoAudio)cEffectCover.oEffect).aChannelsAudio;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
			return aRetVal;
		}
Exemplo n.º 27
0
		void OnStarted(shared.Effect cEffect)
		{
			if (null != Started)
			{
				(new Logger()).WriteDebug3("before Started(this)");
				Started(this);
				(new Logger()).WriteDebug4("after Started(this)");
			}
			else
				(new Logger()).WriteDebug3("empty Started");
		}
Exemplo n.º 28
0
		static void EffectVideoAudio_OnChannelSet(shared.Effect cSender, byte[] aValue)
		{
			try
			{
				EffectCover cEffectCover = EffectCoverGet(cSender);
				if (null == cEffectCover)
					throw new Exception("effectvideoaudio:channels:set: указанный объект не зарегистрирован на сервере [hc:" + cSender.GetHashCode() + "]");
				((BTL.Play.EffectVideoAudio)cEffectCover.oEffect).aChannelsAudio = aValue;
			}
			catch (Exception ex)
			{
				(new Logger()).WriteError(ex);
			}
		}
Exemplo n.º 29
0
		void OnFailed(shared.Effect cEffect)
		{
			lock (_oSyncRoot)   //UNDONE !!!!!!!!!!!!!!!!!!  просто скопировал со стоппеда
			{
				if (_bDone)
					return;
				_bDone = true;
			}
			if (null != Failed)
				Failed(this);
		}
Exemplo n.º 30
0
		static void EffectCreate(shared.Effect cEffect)
        {
			(new Logger()).WriteDebug3("in [hc:" + cEffect.GetHashCode() + "]");
			EffectCover cEffectCover = null;
			lock (_ahEffects)
			{
				if (_ahEffects.ContainsKey(cEffect))
					cEffectCover = _ahEffects[cEffect];
			}
			if (null != cEffectCover)
			{
				(new Logger()).WriteDebug2("effect:create: effect exists [hc:" + cEffect.GetHashCode() + "]");
				BTL.EffectStatus eES = (BTL.EffectStatus)cEffectCover.eStatus;
				if (BTL.EffectStatus.Stopped == eES || BTL.EffectStatus.Idle == eES)
					cEffectCover.Idle();              //Dispose();    надо бы его убивать вообще-то........
				else
					throw new Exception("create: указанный эффект уже создан [hc:" + cEffect.GetHashCode() + "]"); //TODO LANG
			}
			else
			{
				lock (_ahEffects)
				{
					_ahEffects.Add(cEffect, null);
				}
			}
			(new Logger()).WriteDebug4("return [hc:" + cEffect.GetHashCode() + "]");
		}
Exemplo n.º 31
0
		static void VideoCreate(shared.Video cVideoShared, string sFilename, helpers.Dock cDock, ushort nZ, ulong nFrameStart, ulong nDuration, bool bOpacity, ulong nDelay) //TODO убрать dock - его инициализация уже дублируется в userspace
        {
			BTL.Play.Video cVideoBTL = new BTL.Play.Video(sFilename);
			EffectCover cEffectCover = null;
			lock (_ahEffects)
			{
				EffectCreate(cVideoShared);
				_ahEffects[cVideoShared] = new EffectCover(cVideoBTL);
				cEffectCover = _ahEffects[cVideoShared];
			}
			cEffectCover.sType = "Video";
			cEffectCover.sInfo = sFilename;
            cVideoBTL.cDock = cDock;
			cVideoBTL.nLayer = nZ;
			cVideoBTL.nFrameStart = nFrameStart;
			cVideoBTL.nDuration = nDuration;
			cVideoBTL.bOpacity = bOpacity;
			cVideoBTL.nDelay = nDelay;
        }
Exemplo n.º 32
0
		static void AudioCreate(shared.Audio cAudioShared, string sFilename)
        {
			BTL.Play.Audio cAudioBTL = new BTL.Play.Audio(sFilename);
			EffectCover cEffectCover = null;
			lock (_ahEffects)
			{
				EffectCreate(cAudioShared);
				_ahEffects[cAudioShared] = new EffectCover(cAudioBTL);
				cEffectCover = _ahEffects[cAudioShared];
			}
			cEffectCover.sType = "Audio";
			cEffectCover.sInfo = sFilename;
        }
Exemplo n.º 33
0
		internal void OnEffectOffScreen(shared.Effect cEffect)
		{
			if (null != EffectOffScreen)
				EffectOffScreen(this, ItemGet(cEffect).cEffect);
		}
Exemplo n.º 34
0
		static void AnimationCreate(shared.Animation cAnimationShared, string sFolder, ushort nLoopsQty, bool bKeepAlive, helpers.Dock cDock, ushort nZ, bool bOpacity, ulong nDelay, float nPixelAspectRatio)
        {
			(new Logger()).WriteDebug3("in [bKeepAlive:" + bKeepAlive + "]");
			BTL.Play.Animation cAnimationBTL = new BTL.Play.Animation(sFolder, nLoopsQty, bKeepAlive);
			EffectCover cEffectCover = null;
			lock (_ahEffects)
			{
				EffectCreate(cAnimationShared);
				_ahEffects[cAnimationShared] = new EffectCover(cAnimationBTL);
				cEffectCover = _ahEffects[cAnimationShared];
			}
			cEffectCover.sType = "Animation";
			cEffectCover.sInfo = sFolder;
            cAnimationBTL.cDock = cDock;
            cAnimationBTL.nLayer = nZ;
			cAnimationBTL.bOpacity = bOpacity;
			cAnimationBTL.nDelay = nDelay;
			cAnimationBTL.nPixelAspectRatio = nPixelAspectRatio;
        }
Exemplo n.º 35
0
		protected Item ItemGet(shared.Effect cEffect)
		{
			lock (_aItems)
				return _aItems.FirstOrDefault(o => o.cEffectShared == cEffect);
		}
Exemplo n.º 36
0
		static void TextCreate(shared.Text cTextShared, object[] aArgs) //EMERGENCY раскрыть массив в нормальные параметры!!!! 
        {
			BTL.Play.Text cTextBTL = new BTL.Play.Text((string)aArgs[0], new Font((string)aArgs[1], (int)aArgs[2], (FontStyle)aArgs[3]), (float)aArgs[7]);
			EffectCover cEffectCover = null;
			lock (_ahEffects)
			{
				EffectCreate(cTextShared);
				_ahEffects[cTextShared] = new EffectCover(cTextBTL);
				cEffectCover = _ahEffects[cTextShared];
			}
			cEffectCover.sType = "Text";
			cEffectCover.sInfo = (string)aArgs[0];

			cTextBTL.stColor = Color.FromArgb((int)(byte)aArgs[19], (int)(byte)aArgs[4], (int)(byte)aArgs[5], (int)(byte)aArgs[6]);
			cTextBTL.stColorBorder = Color.FromArgb((int)(byte)aArgs[20], (int)(byte)aArgs[8], (int)(byte)aArgs[9], (int)(byte)aArgs[10]);
			cTextBTL.cDock = new helpers.Dock((helpers.Dock.Corner)aArgs[21], (short)aArgs[11], (short)aArgs[12]);
			cTextBTL.nLayer = aArgs[13].ToUShort();
            cTextBTL.nDelay = aArgs[14].ToULong();
			cTextBTL.nDuration = aArgs[15].ToULong();
            cTextBTL.bOpacity = (bool)aArgs[16];
			cTextBTL.nInDissolve = (byte)aArgs[17];
			cTextBTL.nOutDissolve = (byte)aArgs[18];
			cTextBTL.nMaxOpacity = (byte)aArgs[19];
        }
Exemplo n.º 37
0
//***********************************************************************************************************************************************************************************************************
// MANAGE COLLISIONS, DAMAGES AND BLOOD FX
    public void ManageCollision(Collision col, float pitch_max, float crouch_max, AudioSource[] source, AudioClip pain, AudioClip Hit_jaw, AudioClip Hit_head, AudioClip Hit_tail)
    {
        //Exemple weapon collision
        if (col.gameObject.name.Equals("MyWeapon"))
        {
            SpawnBlood(col, source, pain, scale.z);                             //spawn blood, play creature pain sound
            Health -= Mathf.Clamp(20 - (scale.z * ArmorMultiplier), 0.1f, 100); //Take damages 20hp - armor value
            source[1].PlayOneShot(Hit_head, 1.0f);                              //hit sound
            Destroy(col.gameObject);                                            //destroy projectil
            objectTGT = manager.transform.root.gameObject;                      // set the player gameobject to target
            lookTGT   = objectTGT.gameObject;                                   //look at target
            if (CanAttack)
            {
                behavior = "Battle";
            }
            else
            {
                behavior = "ToFlee";        // attack if he can, else flee
            }
            behaviorCount = 1000;           //duration of this behavior
        }

        //Creatures
        else if (col.transform.root.tag.Equals("Creature"))
        {
            shared otherCreature = col.gameObject.GetComponent <shared>();           //Get other creature script

            if (objectTGT == col.transform.root.gameObject)
            {
                objectCOL = objectTGT;
            }

            //A Creature attack me
            if (lastHit == 0 && otherCreature.IsAttacking)
            {
                float baseDamages = otherCreature.scale.z * otherCreature.DamageMultiplier;
                if (col.collider.gameObject.name.Equals("jaw0"))                //bite damage
                {
                    SpawnBlood(col, source, pain, scale.z); source[1].PlayOneShot(Hit_jaw, 1.0f);
                    Health -= Mathf.Clamp(5 + baseDamages - (scale.z * ArmorMultiplier), 0.1f, 100);
                }
                else if (col.collider.gameObject.name.Equals("head"))                //hit by head
                {
                    body.AddExplosionForce(250, col.contacts[0].point, otherCreature.scale.z);
                    SpawnBlood(col, source, pain, scale.z); source[1].PlayOneShot(Hit_head, 1.0f);
                    if (regime.Equals("Carnivorous"))
                    {
                        Health -= Mathf.Clamp(10 + baseDamages - (scale.z * ArmorMultiplier), 0.1f, 100);
                    }
                    else
                    {
                        Health -= Mathf.Clamp(baseDamages - (scale.z * ArmorMultiplier), 0.1f, 100);
                    }
                }
                else if (!col.collider.gameObject.name.Equals("root"))                 //other
                {
                    body.AddExplosionForce(250, col.contacts[0].point, otherCreature.scale.z);
                    SpawnBlood(col, source, pain, scale.z); source[1].PlayOneShot(Hit_tail, 1.0f);
                    if (regime.Equals("Carnivorous"))
                    {
                        Health -= Mathf.Clamp(15 + baseDamages - (scale.z * ArmorMultiplier), 0.1f, 100);
                    }
                    else
                    {
                        Health -= Mathf.Clamp(baseDamages - (scale.z * ArmorMultiplier), 0.1f, 100);
                    }
                }
            }
            //A carnivorous creature of a different species touches me
            if (objectTGT != otherCreature.gameObject && otherCreature.regime == "Carnivorous" && otherCreature.specie != specie)
            {
                if (otherCreature.scale.x > scale.x)
                {
                    behaviorCount = 100;  behavior = "ToFlee";
                }
                else
                {
                    behaviorCount = 100; objectTGT = otherCreature.gameObject;
                    if (CanAttack)
                    {
                        behavior = "Battle";
                    }
                    else
                    {
                        behavior = "ToFlee";
                    }
                }
            }
            //A creature touches me, look at
            else if (!lookTGT)
            {
                lookTGT = otherCreature.gameObject;
            }

            //Player attack, triggers  behavior on other creature
            if (!AI && IsAttacking)
            {
                objectTGT     = otherCreature.gameObject; otherCreature.objectTGT = transform.gameObject;
                behaviorCount = 1000; otherCreature.behaviorCount = 1000;
                if (otherCreature.specie == specie)
                {
                    behavior = "Contest"; otherCreature.behavior = "Contest";
                }
                else if (otherCreature.CanAttack)
                {
                    behavior = "Battle"; otherCreature.behavior = "Battle";
                }
                else
                {
                    behavior = "Battle"; otherCreature.behavior = "ToFlee";
                }
            }
        }

        //Other, is not the ground, not a target... avoid
        else if (objectCOL == null && behavior.StartsWith("To") && col.gameObject != objectTGT &&
                 col.contacts[0].point.y > (transform.position.y + withersSize / 4))
        {
            objectCOL = col.gameObject;
        }
    }
Exemplo n.º 38
0
 public subClass2(shared s) 
 { 
     _shared = s;
 }