]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Move monster model precaching/loading to the client
authorMario <mario.mario@y7mail.com>
Sat, 13 Apr 2013 12:29:39 +0000 (22:29 +1000)
committerMario <mario.mario@y7mail.com>
Sat, 13 Apr 2013 12:29:39 +0000 (22:29 +1000)
18 files changed:
qcsrc/client/Main.qc
qcsrc/client/monsters.qc
qcsrc/client/monsters.qh
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/monsters/monster/demon.qc
qcsrc/server/monsters/monster/dog.qc
qcsrc/server/monsters/monster/enforcer.qc
qcsrc/server/monsters/monster/fish.qc
qcsrc/server/monsters/monster/hknight.qc
qcsrc/server/monsters/monster/knight.qc
qcsrc/server/monsters/monster/ogre.qc
qcsrc/server/monsters/monster/shalrath.qc
qcsrc/server/monsters/monster/shambler.qc
qcsrc/server/monsters/monster/soldier.qc
qcsrc/server/monsters/monster/spider.qc
qcsrc/server/monsters/monster/tarbaby.qc
qcsrc/server/monsters/monster/wizard.qc
qcsrc/server/monsters/monster/zombie.qc

index 630e34fe22c08137c6bc5290d102919e57b6afb2..e0d063c8f5add81c64460f4d7e6f73dc0cae4f81 100644 (file)
@@ -172,6 +172,7 @@ void CSQC_Init(void)
                precache_all_playermodels("models/player/*.iqm");
        }
 
+       Monsters_Precache();
        Projectile_Precache();
        Hook_Precache();
        GibSplash_Precache();
index 257b27f54b61f9c37c954c11163dd1468bccfb1a..93c0943454b0bc0084326545bfe75ed2752775b3 100644 (file)
@@ -9,7 +9,7 @@ void monster_mid2info(float _mid);
 void monster_precache(float _mid)
 {    
     monster_mid2info(_mid);
-    if(turret_is_precache[_mid])
+    if(monster_precached[_mid])
         return;
 
     switch(_mid)
@@ -89,6 +89,13 @@ void monster_precache(float _mid)
     monster_precached[_mid] = TRUE;
 }
 
+void Monsters_Precache()
+{
+       float i;
+       for(i = MONSTER_FIRST; i <= MONSTER_LAST; ++i)
+               monster_precache(i);
+}
+
 void monster_mid2info(float _mid)
 {
        switch(_mid)
index aa6fb41260b5e5e47f5b99e73edb9f743634ed27..83dac2956fa224faa866c9aed2f06dee99234186 100644 (file)
@@ -1 +1,2 @@
 void ent_monster();
+void Monsters_Precache();
index 34928345f8f734a1b7dc99a2a3ad6da437edcc6f..4af941e5ce1139c5ffd431cff25813c41b87f79d 100644 (file)
@@ -927,7 +927,6 @@ void monster_hook_spawn()
 }
 
 float monster_initialize(string  net_name, float mon_id,
-                                                string  bodymodel,
                                                 vector  min_s,
                                                 vector  max_s,
                                                 float   nodrop,
@@ -944,10 +943,6 @@ float monster_initialize(string  net_name, float mon_id,
        if(monster_skill == autocvar_g_monsters_skill_insane && (self.spawnflags & MONSTERSKILL_NOTINSANE)) { return FALSE; }
        if(monster_skill >= autocvar_g_monsters_skill_nightmare && (self.spawnflags & MONSTERSKILL_NOTNIGHTMARE)) { return FALSE; }
 
-       if(self.model == "" || self.model == "null")
-       if(bodymodel == "")
-               error("monsters: missing bodymodel!");
-
        if(self.netname == "")
        {
                if(net_name != "" && IS_PLAYER(self.realowner))
@@ -966,22 +961,15 @@ float monster_initialize(string  net_name, float mon_id,
        if(self.spawnflags & MONSTERFLAG_GIANT && !autocvar_g_monsters_nogiants)
                self.scale = 5;
        
-       
        if(self.team && !teamplay)
                self.team = 0;
 
        self.flags = FL_MONSTER;
-       
-       if(self.model && self.model != "null")
-               bodymodel = self.model; // TODO: find out why monsters can become invisible
                
        if not(self.spawnflags & MONSTERFLAG_SPAWNED) // naturally spawned monster
        if not(self.monster_respawned)
                monsters_total += 1;
-       
-       precache_model(bodymodel);
 
-       setmodel(self, bodymodel);
        ScaleMonster(self.scale, min_s, max_s);
 
        self.takedamage                 = DAMAGE_AIM;
index 3e52b8cc21a93d7bd10670d88c60bd7bca9df634..a417dd8b227777a25c9c9e409d343590562c4adc 100644 (file)
@@ -114,7 +114,6 @@ void spawnfunc_monster_demon ()
        
        if not (monster_initialize(
                         "Fiend", MONSTER_DEMON,
-                        DEMON_MODEL,
                         DEMON_MIN, DEMON_MAX,
                         FALSE,
                         demon_die, demon_spawn))
index 0095a905b4dbe4c722c61e0973c682b91c56e30d..66385e4aece1042fb27331809f0eca71877a7069 100644 (file)
@@ -106,7 +106,6 @@ void spawnfunc_monster_dog ()
        
        if not (monster_initialize(
                         "Cerberus", MONSTER_DOG,
-                        DOG_MODEL,
                         DOG_MIN, DOG_MAX,
                         FALSE,
                         dog_die, dog_spawn))
index 88af41902c3bef7c08e0422efcd2fa397ba3fd06..d9720258c7ce72eed1329f0eb765cf59ddc85d8d 100644 (file)
@@ -119,6 +119,10 @@ void enforcer_spawn ()
        self.attack_ranged              = enforcer_attack;
        self.view_ofs              *= 0.5;
        
+       monsters_setframe(enforcer_anim_stop);
+       
+       setmodel(self, ENFORCER_MODEL); // for weapon entity
+       
        self.weaponentity = spawn();
        self.weaponentity.owner = self;
        self.weaponentity.team = self.team;
@@ -148,10 +152,12 @@ void spawnfunc_monster_enforcer ()
        
        if(Monster_CheckAppearFlags(self))
                return;
+               
+       precache_model("models/turrets/ewheel-gun1.md3");
+       precache_model(ENFORCER_MODEL);
        
        if not (monster_initialize(
                         "Enforcer", MONSTER_ENFORCER,
-                        ENFORCER_MODEL,
                         ENFORCER_MIN, ENFORCER_MAX,
                         FALSE,
                         enforcer_die, enforcer_spawn))
index 677a496f883ff3d5bea8a1f5397598af2c9d4330..afbb13baa4bddad9843fe3d4a0c49977ceb48f99 100644 (file)
@@ -79,7 +79,6 @@ void spawnfunc_monster_fish ()
        
        if not (monster_initialize(
                         "Rotfish", MONSTER_FISH,
-                        FISH_MODEL,
                         FISH_MIN, FISH_MAX,
                         TRUE,
                         fish_die, fish_spawn))
index fca42d953a88da9e4a7c535aaf9b39b4abd6010f..f231b0c06b1a6ded3e0dcdcceb203692687019c7 100644 (file)
@@ -450,7 +450,6 @@ void spawnfunc_monster_hell_knight ()
        
        if not (monster_initialize(
                         "Hell-knight", MONSTER_HELLKNIGHT,
-                        HELLKNIGHT_MODEL,
                         HELLKNIGHT_MIN, HELLKNIGHT_MAX,
                         FALSE,
                         hellknight_die, hellknight_spawn))
index 17ade040af4bc595d00a1f669cc86d065c0bfddd..07701b659ab7b7592cb83d57efaaddfeded61127 100644 (file)
@@ -93,7 +93,6 @@ void spawnfunc_monster_knight ()
        
        if not (monster_initialize(
                         "Knight", MONSTER_KNIGHT,
-                        KNIGHT_MODEL,
                         KNIGHT_MIN, KNIGHT_MAX,
                         FALSE,
                         knight_die, knight_spawn))
index 653fcb619dec1643a83d261b778d4c3287379760..2710d585504affe512344d3fa4f553b89ad115c7 100644 (file)
@@ -162,7 +162,6 @@ void spawnfunc_monster_ogre ()
        
        if not (monster_initialize(
                         "Ogre", MONSTER_OGRE,
-                        OGRE_MODEL,
                         OGRE_MIN, OGRE_MAX,
                         FALSE,
                         ogre_die, ogre_spawn))
index 40d30979e1a043885851b0996c027e7e0e236308..2d481ac4f54fbabab8d4c59e102e13a209741693 100644 (file)
@@ -288,7 +288,6 @@ void spawnfunc_monster_shalrath ()
        
        if not (monster_initialize(
                         "Mage", MONSTER_MAGE,
-                        SHALRATH_MODEL,
                         SHALRATH_MIN, SHALRATH_MAX,
                         FALSE,
                         shalrath_die, shalrath_spawn))
index afa983d226bae365c11f1d488dfebba260353c9a..cea6f94bea0735a70c6fb26c874acfe6ed7b8f0a 100644 (file)
@@ -183,7 +183,6 @@ void spawnfunc_monster_shambler ()
        
        if not (monster_initialize(
                         "Shambler", MONSTER_SHAMBLER,
-                        SHAMBLER_MODEL,
                         SHAMBLER_MIN, SHAMBLER_MAX,
                         FALSE,
                         shambler_die, shambler_spawn))
index 11c3663b1d3054a3177784f6d1954ca8013ec838..8b5c20fd5049e081fc4a69f5a933296a9e36ddaa 100644 (file)
@@ -177,6 +177,8 @@ void soldier_spawn ()
        
        monsters_setframe(soldier_anim_draw);
        
+       setmodel(self, SOLDIER_MODEL);
+       
        RandomSelection_Init();
        RandomSelection_Add(world, WEP_LASER, string_null, autocvar_g_monster_soldier_weapon_laser_chance, 1);
        RandomSelection_Add(world, WEP_SHOTGUN, string_null, autocvar_g_monster_soldier_weapon_shotgun_chance, 1);
@@ -205,10 +207,12 @@ void spawnfunc_monster_soldier ()
        
        if(Monster_CheckAppearFlags(self))
                return;
+               
+       precache_model("models/weapons/v_seeker.md3");
+       precache_model(SOLDIER_MODEL);
        
        if not (monster_initialize(
-                        "Grunt", MONSTER_MARINE,
-                        SOLDIER_MODEL,
+                        "Marine", MONSTER_MARINE,
                         SOLDIER_MIN, SOLDIER_MAX,
                         FALSE,
                         soldier_die, soldier_spawn))
index 63da385fcad6319b62d62e0a3756b7ce15984615..cb22046c79d1947c75e541d7afc3b6997347c11a 100644 (file)
@@ -191,7 +191,6 @@ void spawnfunc_monster_spider()
        
        if not (monster_initialize(
                         "Spider", MONSTER_SPIDER,
-                        SPIDER_MODEL,
                         SPIDER_MIN, SPIDER_MAX,
                         FALSE,
                         spider_die, spider_spawn))
index 0ad255346f92a2160e54115977feb074470e3ce4..be67702a07baecb0c47097c4ed48c9f08fc687e8 100644 (file)
@@ -145,7 +145,6 @@ void spawnfunc_monster_tarbaby ()
        
        if not (monster_initialize(
                         "Spawn", MONSTER_TARBABY,
-                        TARBABY_MODEL,
                         TARBABY_MIN, TARBABY_MAX,
                         FALSE,
                         tarbaby_die, tarbaby_spawn))
index 58c0fe0ed2689c121df181388f8c378fd35c6d6d..301f91e7c8ca547716e94d9efa77c725000c74bb 100644 (file)
@@ -164,7 +164,6 @@ void spawnfunc_monster_wizard ()
        
        if not (monster_initialize(
                         "Scrag", MONSTER_SCRAG,
-                        WIZARD_MODEL,
                         WIZARD_MIN, WIZARD_MAX,
                         TRUE,
                         wizard_die, wizard_spawn))
index 225ede8a405dfa38559f45bee69797f6956e91bd..48ab86c161fe5d1077405b35a5f32beae47b7dd4 100644 (file)
@@ -163,7 +163,6 @@ void spawnfunc_monster_zombie()
        
        if not (monster_initialize(
                         "Zombie", MONSTER_ZOMBIE,
-                        ZOMBIE_MODEL,
                         ZOMBIE_MIN, ZOMBIE_MAX,
                         FALSE,
                         zombie_die, zombie_spawn))