int m_bPlayerInstanceCount = 0; //flag to disable multiple player instances void InitialiseInstance(Parser.Tr2Item tr2item) { GameObject go = tr2item.UnityObject; go.name += " " + tr2item.ObjectID; if (tr2item.ObjectID == 0) { if (m_bPlayerInstanceCount == 1) { GameObject.Destroy(tr2item.UnityObject); return; } //playable character found! m_Player = go; m_Player.layer = UnityLayer.Player; m_PrevPlayPos = m_Player.transform.position; m_Player.transform.parent = m_LevelRoot; if (m_leveldata.Camera != null) { m_leveldata.Camera.target = m_Player.transform; } LaraStatePlayer stateplayer = m_Player.AddComponent <LaraStatePlayer>(); stateplayer.tranimations = m_DynamicPrefabs[0].AnimClips; m_Player.name = "Lara"; GameObject FlashLight = new GameObject("Fire Torch"); FlashLight.AddComponent <FlashLightStatePlayer>(); Light lt = FlashLight.AddComponent <Light>(); lt.type = LightType.Spot; lt.range = 5; lt.spotAngle = 70; lt.intensity = 5; FlashLight.transform.parent = m_Player.transform.Find("objPart:0");//.Find("objPart:7").Find("objPart:14"); FlashLight.transform.position = FlashLight.transform.parent.position; FlashLight.transform.forward = FlashLight.transform.parent.forward; lt.enabled = false; Player player = go.AddComponent <Player>(); player.m_Tr2Item = tr2item; HealthMonitor healthmon = go.AddComponent <HealthMonitor>(); PlayerCollisionHandler playercollider = go.AddComponent <PlayerCollisionHandler>(); //Initialise Current Active Room for player player.m_AnimStatePlayer = stateplayer; player.m_Room = SetRoomForPlayer(); if (player.m_Room != null) { Debug.Log("Player Rooms: " + player.m_Room.name); player.SetSwimState(player.m_Room); } AICondition.SetActive(m_Player, true); //set every game object under player as player Transform[] objs = m_Player.GetComponentsInChildren <Transform>(); foreach (Transform t in objs) { t.gameObject.layer = UnityLayer.Player; } //Add Charecter light GameObject LaraLight = new GameObject("Lara Light"); Light light = LaraLight.AddComponent <Light>(); light.transform.position = m_Player.transform.position; light.type = LightType.Directional; light.transform.forward = Vector3.Reflect(Vector3.one, -Vector3.up); light.transform.parent = m_Player.transform; light.cullingMask = MaskedLayer.Player; light.intensity = 0.3f; light.gameObject.AddComponent <LaraLightStatePlayer>(); m_bPlayerInstanceCount = 1; } //check if we have any custom behabiour script for object else if (m_OnAttachBehabiourScript != null && !m_OnAttachBehabiourScript(tr2item.UnityObject, tr2item.ObjectID, m_Player, tr2item)) { go.AddComponent <DefaultStatePlayer>(); // user did not attached any custom behabiour. so use default one AICondition.SetActive(go, true); //Added default activation state active } }
public static bool OnAttachingBehaviourToObject(GameObject AI, int ObjectID, GameObject Player, Parser.Tr2Item tr2item) { bool retval = false; //TEST: if(ObjectID == 32 || ObjectID == 15 ) return false; if (ObjectID == 15) { DogStatePlayer dog = AI.AddComponent <DogStatePlayer>(); dog.m_FollowTransform = Player.transform; dog.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 16) { GoonWithMaskStatePlayer goon = AI.AddComponent <GoonWithMaskStatePlayer>(); goon.m_FollowTransform = Player.transform; goon.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 20) { BartoliStatePlayer goon = AI.AddComponent <BartoliStatePlayer>(); goon.m_FollowTransform = Player.transform; goon.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 31 || ObjectID == 32) { GoonWithRoolerStatePlayer goon = AI.AddComponent <GoonWithRoolerStatePlayer>(); goon.m_FollowTransform = Player.transform; goon.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 34 || ObjectID == 48 || ObjectID == 49 || ObjectID == 52) { GoonWithArmsStatePlayer goon = AI.AddComponent <GoonWithArmsStatePlayer>(); goon.m_FollowTransform = Player.transform; goon.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 38 || ObjectID == 37) { CrowStatePlayer crow = AI.AddComponent <CrowStatePlayer>(); crow.m_FollowTransform = Player.transform; crow.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 39) { TigerStatePlayer tiger = AI.AddComponent <TigerStatePlayer>(); tiger.m_FollowTransform = Player.transform; tiger.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 47) { EgleStatePlayer egle = AI.AddComponent <EgleStatePlayer>(); egle.m_FollowTransform = Player.transform; egle.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 67) { BoulderStatePlayer boulder = AI.AddComponent <BoulderStatePlayer>(); boulder.m_FollowTransform = Player.transform; boulder.m_Tr2Item = tr2item; AICondition.SetActive(AI, !Settings.ForceDisableAllBoulder); retval = true; } else if (ObjectID == 103 || ObjectID == 104 || ObjectID == 93) { SwitchStatePlayer _switch = AI.AddComponent <SwitchStatePlayer>(); _switch.m_FollowTransform = Player.transform; _switch.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 106 || ObjectID == 110) { DoorStatePlayer door = AI.AddComponent <DoorStatePlayer>(); door.m_FollowTransform = Player.transform; door.m_Tr2Item = tr2item; AICondition.SetActive(AI, !Settings.ForceOpenAllDoors); retval = true; } else if (ObjectID == 107 || ObjectID == 109 || ObjectID == 112 || ObjectID == 114) { DoorStatePlayer door = AI.AddComponent <DoorStatePlayer>(); door.m_FollowTransform = Player.transform; door.m_Tr2Item = tr2item; AICondition.SetActive(AI, !Settings.ForceOpenAllDoors); retval = true; } else if (ObjectID == 108) { DoorStatePlayer door = AI.AddComponent <DoorStatePlayer>(); door.m_FollowTransform = Player.transform; door.m_Tr2Item = tr2item; AICondition.SetActive(AI, !Settings.ForceOpenAllDoors); retval = true; } else if (ObjectID == 214) { TRexStatePlayer trex = AI.AddComponent <TRexStatePlayer>(); trex.m_FollowTransform = Player.transform; trex.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 260) { //ButtlerStatePlayer ButtlerStatePlayer buttler = AI.AddComponent <ButtlerStatePlayer>(); buttler.m_FollowTransform = Player.transform; buttler.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 28 || ObjectID == 25) { SharkGoldenStatePlayer shark_golden = AI.AddComponent <SharkGoldenStatePlayer>(); shark_golden.m_FollowTransform = Player.transform; shark_golden.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } else if (ObjectID == 21 || ObjectID == 36) { RatStatePlayer rat = AI.AddComponent <RatStatePlayer>(); rat.m_FollowTransform = Player.transform; rat.m_Tr2Item = tr2item; AICondition.SetActive(AI, true); retval = true; } return(retval); // if false default behabiour will be used }