示例#1
0
            public IGameEntity Create(string entityId, Character character, GameEntityType entityType, Vector3 spawnPoint, ControllerType controllerType)
            {
                GameObject go;
                GameObject prefab = null;

                if (!string.IsNullOrEmpty(character.gameEntityPrefab))
                {
                    prefab = GetGameEntityPrefab(character.gameEntityPrefab);
                }
                else
                {
                    if (gameEntityPrefabs.Count > 0)
                    {
                        prefab = gameEntityPrefabs[0].prefab;
                    }
                }
                if (prefab == null)
                {
                    throw new UnityException("Unable to spawn gameentity, no prefab found");
                }


                go = GameObject.Instantiate(prefab, spawnPoint, Quaternion.identity) as GameObject;
                SpawnPoint.Instance().spawned = true;

                go.transform.parent = GetEntityContainer().transform;

                GameEntity gameEntity = go.GetComponent <GameEntity>() as GameEntity;

                LoadUmaModel(gameEntity);
                gameEntity.Init(entityId, character, entityType, controllerType);
                return(gameEntity);
            }
 public IGameEntity CreateLocal(GameEntityType entityType)
 {
     Character character = new Character();
     character.id = Settings.Instance().defaultCharacterId;
     Vector3 spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);
     return Create(Settings.Instance().defaultEntityId, character, entityType, spawnPoint, ControllerType.Local);
 }
示例#3
0
            public static GameEntityType GameEntityTypeFromTrackData(TrackData trackData)
            {
                GameEntityType entityType;

                switch (trackData.entityType)
                {
                case TrackData.EntityType.Player:
                    entityType = GameEntityType.Player;
                    break;

                case TrackData.EntityType.Npc:
                    entityType = GameEntityType.Npc;
                    break;

                case TrackData.EntityType.Object:
                    entityType = GameEntityType.Vehicle;
                    break;

                default:
                    entityType = GameEntityType.Other;
                    break;
                }

                if (entityType == GameEntityType.Player && trackData.id != NetworkSettings.instance.username)
                {
                    entityType = GameEntityType.OtherPlayer;
                }

                return(entityType);
            }
示例#4
0
            public static GameEntityType GameEntityTypeFromTrackData(TrackData trackData)
            {
                GameEntityType entityType;
                switch (trackData.entityType) {
                    case TrackData.EntityType.PLAYER:
                        entityType = GameEntityType.Player;
                        break;
                    case TrackData.EntityType.NPC:
                        entityType = GameEntityType.Npc;
                        break;
                    case TrackData.EntityType.SHIP:
                        entityType = GameEntityType.Vehicle;
                        break;
                    case TrackData.EntityType.OTHER:
                        entityType = GameEntityType.Other;
                        break;
                    default:
                        entityType = GameEntityType.Other;
                        break;
                }

                if (entityType == GameEntityType.Player && trackData.id != NetworkSettings.instance.username) {
                    entityType = GameEntityType.OtherPlayer;
                }

                return entityType;
            }
示例#5
0
            public IGameEntity CreateLocal(GameEntityType entityType)
            {
                Character character = new Character();

                character.id = Settings.Instance().defaultCharacterId;
                Vector3 spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);

                return(Create(Settings.Instance().defaultEntityId, character, entityType, spawnPoint, ControllerType.Local));
            }
示例#6
0
            public IGameEntity CreateFromNetwork(string entityId, Character character, TrackData trackData)
            {
                Vector3        spawnPosition = GmUtil.TrackdataToVector3(trackData);
                GameEntityType entityType    = GameEntity.GameEntityTypeFromTrackData(trackData);
                Vector3        spawnPoint    = SpawnPoint.Instance().GetNpcSpawnpoint(spawnPosition);
                IGameEntity    gameEntity    = Create(entityId, character, entityType, spawnPoint, ControllerType.Remote);

                return(gameEntity);
            }
 private Vector3 GetSpawnpoint(GameEntityType entityType, Character character)
 {
     Vector3 spawnPoint;
     if (entityType == GameEntityType.Player) {
         spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);
     } else {
         spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);
     }
     return spawnPoint;
 }
示例#8
0
            public void UpdateFromTrackData(TrackData trackData, bool hasDelta)
            {
                if (entityType == GameEntityType.None)
                {
                    entityType = GameEntityTypeFromTrackData(trackData);
                }

                networkFieldsDef.UpdateFromNetwork(trackData, hasDelta);

                targetPosition = networkFieldsDef.GetPosition();

                lastUpdate = Time.time;
            }
示例#9
0
            private Vector3 GetSpawnpoint(GameEntityType entityType, Character character)
            {
                Vector3 spawnPoint;

                if (entityType == GameEntityType.Player)
                {
                    spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);
                }
                else
                {
                    spawnPoint = SpawnPoint.Instance().GetPlayerSpawnpoint(character);
                }
                return(spawnPoint);
            }
示例#10
0
    private GameEntitySpawnSettings FindSpawnSettings( GameEntityType _EntityToSpawnType )
    {
        GameEntitySpawnSettings matchingSettings = null;

        foreach ( GameEntitySpawnSettings spawnSettings in m_EntitySpawnSettings )
        {
            GameEntityType spawnType = spawnSettings.GetEntityType();

            if (spawnType == _EntityToSpawnType)
            {
                matchingSettings = spawnSettings;
                break;
            }
        }

        return matchingSettings;
    }
    public static GameEntitySpawner FindEntitySpawner( GameEntityType _EntityToSpawnType )
    {
        GameEntitySpawner matchingSpawner = null;

        Object[] spawners = FindObjectsOfType(typeof(GameEntitySpawner));
        foreach ( Object spawner in spawners )
        {
            GameEntitySpawner entitySpawner = spawner as GameEntitySpawner;
            GameEntityType spawnerType = entitySpawner.GetSpawnType();

            if (spawnerType == _EntityToSpawnType)
            {
                matchingSpawner = entitySpawner;
                break;
            }
        }

        return matchingSpawner;
    }
示例#12
0
            public IGameEntity Create(string entityId, Character character, GameEntityType entityType)
            {
                Vector3 spawnPosition;
                SpawnPoint spawnPoint = GameComponent.Get<SpawnPoint>() as SpawnPoint;
                if (character == null) {
                    Debug.Log("NULL character");
                }
                if (character.worldx != 0 && character.worldy != 0) {
                    float x;
                    float y;
                    float z;

                    x = Util.Instance.IntToFloat(character.worldx, true);
                    z = Util.Instance.IntToFloat(character.worldy, true);
                    y = Util.Instance.IntToFloat(character.worldz, true);

                    spawnPosition = spawnPoint.GroundedPosition(new Vector3(x, y, z));
                } else {
                    spawnPosition = spawnPoint.GetFirst();
                }

                return Create(entityId, character, entityType, spawnPosition);
            }
示例#13
0
            public void Init(string entityId, Character character, GameEntityType entityType, ControllerType controllerType)
            {
                this.character      = character;
                this.entityType     = entityType;
                this.entityId       = entityId;
                this.controllerType = controllerType;

                gameObject.name = character.id;
                gameObject.tag  = Settings.Instance().gameEntityTag;

                inputController.SetControllerType(controllerType);
                if (controllerType == ControllerType.Remote)
                {
                    gameObject.layer = LayerMask.NameToLayer(Settings.Instance().gameEntityTag);
                    AddHealthbar();
                }

                networkSpawnPoint = SpawnPoint.Instance().GetCharacterSpawnpoint(character);

                if (DefaultClient.OptimizeForServer())
                {
                    Destroy(gameObject.GetComponentInChildren <SkinnedMeshRenderer>());
                }
            }
示例#14
0
            public void Init(string entityId, Character character, GameEntityType entityType, ControllerType controllerType)
            {
                this.character = character;
                this.entityType = entityType;
                this.entityId = entityId;
                this.controllerType = controllerType;

                gameObject.name = character.id;
                gameObject.tag = Settings.Instance().gameEntityTag;

                inputController.SetControllerType(controllerType);
                if (controllerType == ControllerType.Remote) {
                    gameObject.layer = LayerMask.NameToLayer(Settings.Instance().gameEntityTag);
                    AddHealthbar();
                }

                networkSpawnPoint = SpawnPoint.Instance().GetCharacterSpawnpoint(character);

                if (DefaultClient.OptimizeForServer()) {
                    Destroy(gameObject.GetComponentInChildren<SkinnedMeshRenderer>());
                }
            }
示例#15
0
            public void UpdateFromTrackData(TrackData trackData, bool hasDelta)
            {
                if (entityType == GameEntityType.None) {
                    entityType = GameEntityTypeFromTrackData(trackData);
                }

                networkFields.UpdateFromNetwork(trackData, hasDelta);

                serverLocation = networkFields.GetVector3(GMKeyCode.Position);

                lastUpdate = Time.time;
            }
示例#16
0
            public void Init(string entityId, Character character, GameEntityType entityType)
            {
                this.character = character;
                this.entityType = entityType;
                this.entityId = entityId;

                gameObject.name = character.id;
                gameObject.tag = Settings.Instance().gameEntityTag;

                model = transform.Find("model");
                animationController = model.GetComponent<AnimationController>();

                if (this.entityType == GameEntityType.Player) {
                    inputController.SetControllerType("local");
                } else {
                    inputController.SetControllerType("remote");
                }
            }
示例#17
0
 public IGameEntity Create(string entityId, Character character, GameEntityType entityType, Vector3 spawnPosition)
 {
     GameObject go = GameComponent.Get<AssetLibrary>().Load("GameEntity");
     go.transform.parent = GetEntityContainer().transform;
     go.transform.position = spawnPosition;
     GameEntity gameEntity = go.GetComponent<GameEntity>() as GameEntity;
     gameEntity.Init(entityId, character, entityType);
     return gameEntity;
 }
示例#18
0
            public void UpdateFromTrackData(TrackData trackData, bool hasDelta)
            {
                if (entityType == GameEntityType.None) {
                    entityType = GameEntityTypeFromTrackData(trackData);
                }

                networkFieldsDef.UpdateFromNetwork(trackData, hasDelta);

                targetPosition = networkFieldsDef.GetPosition();

                lastUpdate = Time.time;
            }
            public IGameEntity Create(string entityId, Character character, GameEntityType entityType, Vector3 spawnPoint, ControllerType controllerType)
            {
                GameObject go;
                GameObject prefab = null;

                if (!string.IsNullOrEmpty(character.gameEntityPrefab)) {
                    prefab = GetGameEntityPrefab(character.gameEntityPrefab);
                } else {
                    if (gameEntityPrefabs.Count > 0) {
                        prefab = gameEntityPrefabs[0].prefab;
                    }
                }
                if (prefab == null) {
                    throw new UnityException("Unable to spawn gameentity, no prefab found");
                }

                go = GameObject.Instantiate(prefab, spawnPoint,Quaternion.identity) as GameObject;
                SpawnPoint.Instance().spawned = true;

                go.transform.parent = GetEntityContainer().transform;

                GameEntity gameEntity = go.GetComponent<GameEntity>() as GameEntity;
                LoadUmaModel(gameEntity);
                gameEntity.Init(entityId, character, entityType, controllerType);
                return gameEntity;
            }
 // -------------------------------------------------------------------
 // Private
 // -------------------------------------------------------------------
 private GameEntityId GetNextGameEntityId(GameEntityType type)
 {
     return(new GameEntityId(this.nextGameEntityId++, type));
 }
示例#21
0
 // -------------------------------------------------------------------
 // Constructor
 // -------------------------------------------------------------------
 public GameEntityId(ulong value, GameEntityType type)
 {
     this.Value = value;
     this.Type  = type;
 }
示例#22
0
 public IGameEntity Create(GameEntityType entityType)
 {
     Character character = new Character();
     character.id = Settings.Instance().defaultCharacterId;
     return Create(Settings.Instance().defaultEntityId, character, entityType);
 }