Example #1
0
        private void SpawnMonster(Entity e, SkillDatam datam)
        {
            if (World.EntityManager.HasComponent <CharacterRaycaster>(e) == false)
            {
                return;
            }
            int   monsterID               = datam.monster.Value.id;
            ZoxID zoxID                   = World.EntityManager.GetComponentData <ZoxID>(e);
            CharacterRaycaster caster     = World.EntityManager.GetComponentData <CharacterRaycaster>(e);
            WorldBound         worldBound = World.EntityManager.GetComponentData <WorldBound>(e);

            if (caster.DidCast() == 1)
            {
                ZoxID stats = World.EntityManager.GetComponentData <ZoxID>(e);
                //caster.triggered = 1;
                World.EntityManager.SetComponentData(e, caster);
                int clanID = stats.clanID;
                if (datam.Value.isSpawnHostile == 1)
                {
                    clanID = Bootstrap.GenerateUniqueID();
                }
                CharacterSpawnSystem.SpawnNPC(World.EntityManager, worldBound.world, monsterID, clanID, caster.voxelPosition, zoxID.id);

                /*if (datam.Value.isSpawnHostile != 1)
                 * {
                 *  Entity npc = characterSpawnSystem.characters[spawnedID];
                 *  ZoxID spawnedZoxID = World.EntityManager.GetComponentData<ZoxID>(npc);
                 *  spawnedZoxID.creatorID = zoxID.id;
                 *  World.EntityManager.SetComponentData(npc, spawnedZoxID);
                 * }*/
                AudioManager.instance.PlaySound(datam.audio, caster.voxelPosition);
                //Debug.LogError("Spawning Turret at: " + caster.voxelPosition.ToString());
            }
        }
Example #2
0
        private void SpawnPlayerCharacter(SpawnCharacterCommand command)
        {
            Entity entity = World.EntityManager.CreateEntity(playerArchtype);
            int    id;
            bool   isLoadingPlayer = false;

            if (command.characterID != 0)
            {
                id = command.characterID;
                isLoadingPlayer = true;
            }
            else
            {
                id = Bootstrap.GenerateUniqueID();
            }
            if (SetCharacter(entity, id, isLoadingPlayer, command.world, command.metaID, command.classID, command.clanID, command.position))
            {
                SetPlayerCharacter(entity, id, command.world, command.metaID, command.position);
                cameraSystem.ConnectCameraToCharacter(command.camera, entity);
                playerSpawnSystem.SetPlayerCharacter(entity, command.playerID);
                if (isLoadingPlayer)
                {
                    saveSystem.LoadPlayer(entity);
                }
                Entity gameEntity = command.game;
                var    game       = World.EntityManager.GetComponentData <Game>(gameEntity);
                game.AddPlayerCharacter(id);
                World.EntityManager.SetComponentData(gameEntity, game);
                worldSpawnSystem.OnAddedStreamer(entity, command.world);
            }
        }
Example #3
0
        public EquipLayer layer;  // 0 for body, 1 for gear

        public void GenerateID()
        {
            if (id == 0)
            {
                id = Bootstrap.GenerateUniqueID();
            }
        }
Example #4
0
 protected override void OnStartRunning()
 {
     Debug.Log("Not yet fixed WaveModeSystem.");
     wavesClanID = Bootstrap.GenerateUniqueID();
     base.OnStartRunning();
     BeginGameMode();
 }
Example #5
0
        private void SpawnNPCCharacter(SpawnCharacterCommand command)
        {
            Entity entity = World.EntityManager.CreateEntity(npcArchtype);
            int    id     = Bootstrap.GenerateUniqueID();

            SetCharacter(entity, id, false, command.world, command.metaID, command.classID, command.clanID, command.position);
            SetNPCCharacter(entity, id, command.metaID, command.position);
        }
Example #6
0
        public int SpawnCameraOnCharacter(Entity attachEntity, CameraData cameraData)
        {
            int        id            = Bootstrap.GenerateUniqueID();
            float3     spawnPosition = World.EntityManager.GetComponentData <Translation>(attachEntity).Value;
            quaternion spawnRotation = World.EntityManager.GetComponentData <Rotation>(attachEntity).Value;

            SpawnCamera(id, spawnPosition, spawnRotation, attachEntity, cameraData);
            return(id);
        }
Example #7
0
        //static float turretScale = 0.5f;
        // queue

        public static int QueueTurret(float3 spawnPosition, int type, int summonerID)
        {
            int id = Bootstrap.GenerateUniqueID();

            commandsIDs.Add(id);
            commandsSpawn.Add(spawnPosition);
            commandsType.Add(type);
            commandsSummonerID.Add(summonerID);
            return(id);
        }
Example #8
0
 public void GenerateIDs()
 {
     for (int i = 0; i < data.datas.Count; i++)
     {
         BoneData thisBone = data.datas[i];
         thisBone.id   = Bootstrap.GenerateUniqueID();
         data.datas[i] = thisBone;
     }
     FixParentIDs();
 }
Example #9
0
        private void AddBone(string boneName, string parentName, float3 position, float influence)
        {
            BoneData newData = new BoneData();

            newData.id         = Bootstrap.GenerateUniqueID();
            newData.name       = boneName;
            newData.parentName = parentName;
            newData.position   = position;
            newData.influence  = influence;
            data.datas.Add(newData);
        }
Example #10
0
        public Dictionary <int, CameraDatam> GetCameras()
        {
            var meta = new Dictionary <int, CameraDatam>();

            foreach (CameraDatam camera in cameras)
            {
                if (camera.Value.id == 0)
                {
                    camera.Value.id = Bootstrap.GenerateUniqueID();
                }
                meta.Add(camera.Value.id, camera);
            }
            return(meta);
        }
Example #11
0
        public Dictionary <int, BulletDatam> GetBullets()
        {
            var meta = new Dictionary <int, BulletDatam>();

            foreach (BulletDatam bullet in bullets)
            {
                if (bullet.Value.id == 0)
                {
                    bullet.Value.id = Bootstrap.GenerateUniqueID();
                }
                meta.Add(bullet.Value.id, bullet);
            }
            return(meta);
        }
Example #12
0
        public Dictionary <int, DialogueDatam> GetDialogues()
        {
            var meta = new Dictionary <int, DialogueDatam>();

            foreach (DialogueDatam data in dialogues)
            {
                if (data.dialogueTree.id == 0)
                {
                    data.dialogueTree.id = Bootstrap.GenerateUniqueID();
                }
                meta.Add(data.dialogueTree.id, data);
            }
            return(meta);
        }
Example #13
0
        public int SpawnCamera(CameraData cameraData)
        {
            int        id            = Bootstrap.GenerateUniqueID();
            float3     spawnPosition = float3.zero;
            quaternion spawnRotation = quaternion.identity;

            if (Camera.main != null)
            {
                spawnPosition = Camera.main.transform.position;
                spawnRotation = Camera.main.transform.rotation;
            }
            SpawnCamera(id, spawnPosition, spawnRotation, new Entity(), cameraData);
            return(id);
        }
Example #14
0
        public static int SpawnNPC(EntityManager EntityManager, Entity world, int metaID, int clanID, float3 position, int creatorID = 0)
        {
            int    characterID = Bootstrap.GenerateUniqueID();
            Entity e           = EntityManager.CreateEntity();

            EntityManager.AddComponentData(e, new SpawnCharacterCommand
            {
                world       = world,
                metaID      = metaID,
                position    = position,
                clanID      = clanID,
                characterID = characterID,
                creatorID   = creatorID
            });
            return(characterID);
        }
Example #15
0
        public Entity CreateGame(GameDatam data)
        {
            if (meta.ContainsKey(data.id) == false)
            {
                Debug.Log("Game not part of meta [" + data.name + "]");
                return(new Entity());
                //meta.Add(data.id, data);
            }
            Entity game = World.EntityManager.CreateEntity();
            int    id   = Bootstrap.GenerateUniqueID();

            World.EntityManager.AddComponentData(game, new Game
            {
                id     = id,
                metaID = data.id
            });
            games.Add(id, game);
            Debug.Log("Created new game [" + data.name + "] as [" + id + "]");
            return(game);
        }
Example #16
0
        public static int[] SpawnNPCs(EntityManager EntityManager, Entity world, int metaID, int clanID, float3 position, int amount)
        {
            SpawnCharacterCommand command = new SpawnCharacterCommand
            {
                world        = world,
                metaID       = metaID,
                position     = position,
                amount       = amount,
                clanID       = clanID,
                characterIDs = new BlitableArray <int>(amount, Allocator.Persistent)
            };

            for (int i = 0; i < amount; i++)
            {
                command.characterIDs[i] = (Bootstrap.GenerateUniqueID());
            }
            Entity e = EntityManager.CreateEntity();

            EntityManager.AddComponentData(e, command);
            return(command.characterIDs.ToArray());
        }
Example #17
0
        private void SpawnItem(SpawnItemCommand command)
        {
            if (meta.ContainsKey(command.data.id) == false)
            {
                Debug.LogError("Item not in meta.");
                return;
            }
            ItemDatam itemDatam = meta[command.data.id];
            Entity    entity    = World.EntityManager.CreateEntity(itemArchtype);
            int       id        = Bootstrap.GenerateUniqueID();

            World.EntityManager.SetComponentData(entity, new WorldItem {
                id       = id,
                data     = command.data,
                quantity = command.quantity
            });
            World.EntityManager.SetComponentData(entity, new ItemBob {
                originalPosition = command.spawnPosition
            });
            World.EntityManager.SetComponentData(entity, new Translation {
                Value = command.spawnPosition
            });
            World.EntityManager.SetComponentData(entity, new NonUniformScale {
                Value = itemDatam.model.data.scale
            });                                                                                                       // itemDatam.Value.scale * 0.5f });
            World.EntityManager.SetComponentData(entity, new Rotation {
                Value = Quaternion.Euler(0, UnityEngine.Random.Range(-180, 180), 0)
            });

            RenderMesh newRenderer = new RenderMesh();

            newRenderer.castShadows    = UnityEngine.Rendering.ShadowCastingMode.On;
            newRenderer.receiveShadows = true;
            newRenderer.mesh           = new Mesh(); //itemDatam.model.bakedMesh;
            newRenderer.material       = Bootstrap.GetVoxelMaterial();
            World.EntityManager.SetSharedComponentData(entity, newRenderer);
            WorldSpawnSystem.QueueUpdateModel(World.EntityManager, entity, id, itemDatam.model.data);
            items.Add(id, entity);
        }
Example #18
0
        private void AddBranchClicked(DialogueDatam dialogueDatam)
        {
            var branch = new DialogueBranch();

            branch.id = Bootstrap.GenerateUniqueID();
            uis.Add(LoadBlockUI(dialogueDatam, branch));
            dialogueDatam.dialogueTree.AddBranch(branch);
            //cachedProperty.SetValue(stats);
            for (int i = 0; i < dialogueDatam.dialogueTree.branches.Length - 1; i++)
            {
                var linkUIs = uis[i].Query("Links");
                //for (int j = 0; j < linkUIs.Count; j++)
                //foreach (var linkUI in linkUIs.Descendents)
                int linkIndex = 0;
                linkUIs.ForEach((linkUI) =>
                {
                    AddLinkChoiceUI(dialogueDatam.dialogueTree.branches[i], branch, linkUI as Foldout, linkIndex);
                    linkIndex++;
                });
            }
            EditorUtility.SetDirty(cachedObject.targetObject);
        }
Example #19
0
 public void GenerateID()
 {
     dialogueTree.id = Bootstrap.GenerateUniqueID();
 }
Example #20
0
 public void GenerateID()
 {
     Value.id = Bootstrap.GenerateUniqueID();
 }
Example #21
0
 public void GenerateID()
 {
     data.id = Bootstrap.GenerateUniqueID();
 }
Example #22
0
 protected override void OnUpdate()
 {
     Entities.WithAll <Equipment>().ForEach((Entity e, ref Equipment equipment) =>
     {
         if (equipment.dirty == 1)
         {
             equipment.dirty = 0;
             // get VoxData of the character stored in world system
             VoxData model = new VoxData {
                 id = Bootstrap.GenerateUniqueID()
             };    // make this part of equipment
             //var voxes = new List<VoxData>();
             //var positions = new List<int3>();    // after added them all, offset all positions by min, also get max to use as size
             //var operations = new List<VoxOperation>();
             var bodyLayer = new VoxBuildLayer();
             bodyLayer.Init();
             var gearLayer = new VoxBuildLayer();
             gearLayer.Init();
             for (int i = 0; i < equipment.body.Length; i++)
             {
                 // first find core
                 // then for its meta
                 // find any children of that core
                 // then loop for them
                 // different merge function for each axis enum + the offset of the slot
                 var core = equipment.body[i].data;
                 if (meta.ContainsKey(core.id))
                 {
                     if (core.maleSlot.id == 0)
                     {
                         var coreDatam = meta[core.id];
                         //Debug.LogError("Adding Core");
                         bodyLayer.voxes.Add(coreDatam.model.data);
                         bodyLayer.positions.Add(int3.Zero());
                         bodyLayer.operations.Add(VoxOperation.None);
                         bodyLayer.parents.Add(-1);
                         bodyLayer.bonePositions.Add(coreDatam.model.data.size / 2);
                         bodyLayer.axes.Add((byte)SlotAxis.Center);
                         //float3 realPosition = coreDatam.model.data.size.ToFloat3()/2f;
                         //bodyLayer.realPositions.Add(realPosition);
                         AddChildren(ref equipment,
                                     ref bodyLayer, ref gearLayer, //ref voxes, ref positions, ref operations,
                                     VoxOperation.None, core, i, int3.Zero());
                         break;
                     }
                 }
             }
             // combine voxes
             var combinedVoxes = new List <VoxData>();
             combinedVoxes.AddRange(bodyLayer.voxes);
             combinedVoxes.AddRange(gearLayer.voxes);
             var combinedPositions = new List <int3>();
             combinedPositions.AddRange(bodyLayer.positions);
             combinedPositions.AddRange(gearLayer.positions);
             int3 size = VoxData.GetSize(combinedVoxes, combinedPositions);
             int3 min;
             int3 max;
             VoxData.CalculateMinMax(combinedVoxes, combinedPositions, out min, out max);
             int3 addition       = VoxData.CalculateAddition(min, max);
             bodyLayer.positions = VoxData.FixPositions(bodyLayer.positions, addition);
             gearLayer.positions = VoxData.FixPositions(gearLayer.positions, addition);
             model.Build(bodyLayer, gearLayer, size);
             // updates body model using this new vox data
             float3 bodySize = model.GetSize();
             World.EntityManager.SetComponentData(e, new Body {
                 size = bodySize
             });
             WorldBound worldBound = World.EntityManager.GetComponentData <WorldBound>(e);
             worldBound.size       = bodySize;
             World.EntityManager.SetComponentData(e, worldBound);
             // this can be done in equip system
             int id = World.EntityManager.GetComponentData <ZoxID>(e).id;
             //Debug.LogError("Equipment Mesh updated for: " + id);
             WorldSpawnSystem.QueueUpdateModel(World.EntityManager, e, id, model);
             if (World.EntityManager.HasComponent <Skeleton>(e))
             {
                 var skeleton = World.EntityManager.GetComponentData <Skeleton>(e);
                 //skeleton.SetBody(model.size, bodyLayer.positions, bodyLayer.voxes);
                 combinedPositions       = VoxData.FixPositions(combinedPositions, addition);
                 bodyLayer.bonePositions = VoxData.FixPositions(bodyLayer.bonePositions, addition);
                 skeleton.SetBody(model.size, combinedPositions, combinedVoxes);
                 skeleton.SetBones(World.EntityManager, e, bodyLayer.positions.ToArray(), bodyLayer.voxes.ToArray(), bodyLayer.bonePositions.ToArray(),
                                   bodyLayer.parents.ToArray(), bodyLayer.axes.ToArray());
                 World.EntityManager.SetComponentData(e, skeleton);
             }
         }
     });
 }
Example #23
0
        private void SpawnBullets(int[] metaIDs,
                                  float3[] positions, quaternion[] rotations,
                                  int[] creatorIDs, int[] clanIDs)/*, float[] damages, float[] bulletSpeeds, )*/
        {
            NativeArray <Entity> bulletEntities = new NativeArray <Entity>(positions.Length, Allocator.Temp);

            World.EntityManager.Instantiate(bulletPrefab, bulletEntities);
            // for all bullets, set custom data using indexes entity
            float timeBegun = UnityEngine.Time.time;

            for (int i = 0; i < bulletEntities.Length; i++)
            {
                int metaID = metaIDs[i];
                // increase by character stats and skill level!
                float damage   = UnityEngine.Random.Range(meta[metaID].Value.damage.x, meta[metaID].Value.damage.y);
                float lifetime = meta[metaID].Value.lifetime; // increase by character stats
                float speed    = meta[metaID].Value.speed;    // increase by character stats
                float scale    = meta[metaID].Value.scale;    // increase by character stats

                Entity bulletEntity = bulletEntities[i];
                int    id           = Bootstrap.GenerateUniqueID();
                bullets.Add(id, bulletEntity);
                World.EntityManager.SetComponentData(bulletEntity, new ZoxID {
                    id        = id,
                    creatorID = creatorIDs[i],
                    clanID    = clanIDs[i]
                });
                // stats
                World.EntityManager.SetComponentData(bulletEntity, new Bullet {
                    damage      = damage,
                    timeStarted = timeBegun,
                    lifetime    = lifetime,
                    metaID      = metaID
                });

                // Transforms
                World.EntityManager.SetComponentData(bulletEntity, new Translation {
                    Value = positions[i]
                });
                World.EntityManager.SetComponentData(bulletEntity, new Scale {
                    Value = scale
                });                                                                             //new float3(0.33f, 0.33f, 0.33f) });
                World.EntityManager.SetComponentData(bulletEntity, new Rotation {
                    Value = rotations[i]
                });
                // rendering
                var vox = meta[metaID].model;
                World.EntityManager.SetSharedComponentData(bulletEntity,
                                                           new RenderMesh {
                    material = Bootstrap.GetVoxelMaterial(),
                    mesh     = new Mesh()//meta[metaID].model.bakedMesh
                });
                WorldSpawnSystem.QueueUpdateModel(World.EntityManager, bulletEntity, id, vox.data);

                // movement
                // divide it by mass? or just set acceleration, and mass as parameters
                if (World.EntityManager.HasComponent <BodyForce>(bulletEntity))
                {
                    World.EntityManager.SetComponentData(bulletEntity, new BodyForce {
                        velocity = new float3(0, 0, speed)
                    });
                }

                // Add particle emitter here
                if (meta[metaID].Value.particlesName != "")
                {
                    ParticlesManager.instance.PlayParticles(
                        new ParticleSpawnCommand
                    {
                        name = meta[metaID].Value.particlesName,
                        deathParticleName = meta[metaID].Value.deathParticlesName,
                        deathParticleLife = meta[metaID].Value.deathParticleLife
                    },
                        bulletEntity, World.EntityManager);
                }
            }
            bulletEntities.Dispose();
        }