How to retrieve what kind of model

All topics about ZGameEditor goes here.

Moderator: Moderators

Post Reply
User avatar
Ats
Posts: 603
Joined: Fri Sep 28, 2012 10:05 am
Contact:

How to retrieve what kind of model

Post by Ats »

Hello,
In order to play different sounds when walls or spaceships are passing by the player, I'm trying to retrieve what kind of model is passing around.

I made this function (using ZgeBullet), that fire rays to test if models are passing around the player.
Here's a striped down example for detecting objects on the left side and playing a sound:

Code: Select all

xptr pointer = zbtRayTest(PlayerShip.Position.X, PlayerShip.Position.Y, PlayerShip.Position.Z,
                          PlayerShip.Position.X - 20, PlayerShip.Position.Y, PlayerShip.Position.Z);
if (pointer != null) playSound();
The problem is that walls and spaceships are playing the same sound, and most of all, the corridors from within the mothership are making non-stop noise. So I'm trying to detect what kind of model the pointer is touching. And here's my problem, everything I tried is crashing the game...

Code: Select all

xptr pointer = zbtRayTest(PlayerShip.Position.X, PlayerShip.Position.Y, PlayerShip.Position.Z,
                          PlayerShip.Position.X - 20, PlayerShip.Position.Y, PlayerShip.Position.Z);
if (pointer != null)
{
   model m = zbtGetUserModel(pointer); // This is working nicely
   if (m.PlaySound == 1) playSound(); // PlaySound is an Int in Model Obstacle, as an example, but it crashes. And it will not work with Enemy Models...
   
   trace(intToStr(m.Category)); // It crashes
   trace(m.Name); // I also tried to retrieve m.Name, but this doesn't seem to exist...
   
}
What should I do in order to know what Model I'm touching?
User avatar
VilleK
Site Admin
Posts: 2274
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Re: How to retrieve what kind of model

Post by VilleK »

Just a guess but maybe in this case you get a model that has been deleted so this is why it crash.

Please make sure that you remove all the zgebullet handles for a model when a model is deleted.

Also make sure you are actually setting the model with zbtSetUserModel too.
User avatar
Ats
Posts: 603
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Re: How to retrieve what kind of model

Post by Ats »

Hahaha. Thanks Ville, you are totally right about the zgeSetUserModel. I had it on the enemies but not on the obstacles. And a quick search in the forum with that name leads directly to my own post being very clear about that very part... :lol:
viewtopic.php?p=10329#p10329

Happy good year!
User avatar
Ats
Posts: 603
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Re: How to retrieve what kind of model

Post by Ats »

All right, so now I have this weird bug where everything works in the ZGE preview, but not when the game is compiled (windows and android) :|
Here's a strip down code of what I'm actually doing:

Code: Select all

int isModelPassingByMakesSound(xptr pointer)
{
  if (pointer == null) return FALSE; // In case zbtRayTest touched nothing
  model m = zbtGetUserModel(pointer);
  if (m == null) return FALSE; // In case zgeSetUserModel wasn't done for the Model

  if (m.Name == "Enemy") return TRUE; // Enemy make sound
  if (m.Name == "Obstacle" && m.Obstacle_PlaySound == TRUE) return TRUE; // Some Objects make sounds
  return FALSE;
}

(...)

pointer = zbtRayTest(PlayerShip.Position.X, PlayerShip.Position.Y, PlayerShip.Position.Z,
          PlayerShip.Position.X - 20, PlayerShip.Position.Y, PlayerShip.Position.Z);

if (isModelPassingByMakesSound(pointer))
{
  // do things
}
After some tries, I don't think m.Name works in release mode, so I made a strip down example to illustrate the problem:

Code: Select all

<?xml version="1.0" encoding="iso-8859-1" ?>
<ZApplication Name="App" Caption="ZGameEditor application" FileVersion="2">
  <OnLoaded>
    <ZExpression>
      <Expression>
<![CDATA[model m = MyModel;
trace(m.Name);
ShowText.Text = m.Name;]]>
      </Expression>
    </ZExpression>
  </OnLoaded>
  <OnRender>
    <UseMaterial Material="FontMaterial"/>
    <RenderText Name="ShowText" Text="MyModel"/>
  </OnRender>
  <Content>
    <Font Name="Font" Bitmap="FontBitmap" FirstChar="32" CharPixelWidth="32" CharPixelHeight="32"/>
    <Bitmap Name="FontBitmap" Width="512" Height="256">
      <Producers>
        <BitmapFromFile Comment="Imported from ExportedFont.bmp" DataWidth="512" DataHeight="256">
          <BitmapFile>
<![CDATA[789CED9D3D76DCBA1284B95C2DC24BB82BD0069C2BBFB153A70A152ABBA1B379FDD4C7754A0D92E210DD2431AA2FF0D18C6400C44FA1D100D1D32484104208218410420821841042082184104208218410420821841042082184A8E5E7CF9FAFAFAFFFFDF7DFED2FEFEFEFBF7EFD7A7A7A3ABB68F7F1F2F2F2F6F6E68FF0E7CF1F7BA87FFEF9C77F65CF885FE1B7F6E5B90536AC84B755F008E9D9E5A62C84189125E53191FCF1E3474A16A6CC36A7A424B584A53FFB1436912DFDEA0A1A28FD17429C88AB81D9FF66219B5AB29D9C22DA48D07EE84F6D96158567ECCFDEFE72110DB44596CDB328E15B43D614EC48FF85108C697E1019FB062AD19FBE250E89FBFDFB777F82819F3F7FA2B448DF74953D5A46EBED797E7EBE828F8B35F9DF7FFF3D2C2FE9BF102260B2C0E6744A9A2CD1E95EF7D7D7D7D9D272A6F637B999E662B27F8C2C4BFFC50EAC7FBA3565FFA69B28ED9A97A94E7F0BFD651882B0497A4BF5D8F09A22D7A7013B3F9496B5CE7EF5EF028925E901B398AD95EA5625D27F712F6C47559870B755AAD3DF427F192ECEF3F373F096DC3EBCE5B9428D942DAF8A64DBD96AACC64513D4ED95F358B6462FCA453C12C1269C1D683D540FCF2D22308A4454D0CEEFA63FE95E1AD8FF89C78A9C2DF6FF108D5BBD5132515DB5D525C42CD5FA2FCE85BDFD263B15CE8752FF3FF7CFA54C839CC2DF9EBB12E9A7B4A2AA17F2E22191FE9F8EEB159CD5DE22EEBF758BD1BFDF67D0CE36ABCD022F2F2F1965FF64D6DA2A20254DC6CAD9EA7C38FF13161D98F28ACCEC1EAC48B365EE870F9A5E73FA13174466C3E92CE9FFF3F333B7C83EFDE7F333BEDF0D794C7111BFD59FFF6F372F5A4CFD4C5A6D02E23FCE15D87DB4E70D2AF4998F18F1CF59B37C11D53335DC92757BEE68507F84DC270AE52F7A9CD2F33FE24B96F4DF6D456B14DF31DCA7FF6C9F07B214BBFAFDDF9547B04A5BFAD545CC98D9B281AC5C5009DEA66F74514656161540D08A8C0718B775B2161E21F78942F90F781C713C4BFAEFF7D8B803C466FCDD8A61FFD7A692B03938DC1540563F30AEEC59EC8960DEAFFCEA740ED07F3E7CEB6EC3235F3AEBC19A297D2A9C4DBFCE15161E21F78942F90F781C713CB3FAEF83DA667C577EB8C1CF2DAAB81A300C82CDC94B802B4FF4304B8AA6EC303356101E21F78942F90F781C7130B3FAEFBDC8BF79FF40FA2F5AB0A11C3481970017DC0707D8AD28F2D7611EAC389CE0C036F347081F3B09E53FE07144C01B145B69789DAABF09FC42366CBEBC7DBEA20DD71AF01998DD79B1FF47EBC7E3A9A87FF636B40E67DE6BBEF212A07492C2FC58BA45151E21F18942F98F791CC1F828B375747B8542E714307BF8165FB2FDD0A9FF7CFF40E97013B314D53FF79FD62110AEC8E8CF4E88EF49106A1BBC58B79E5DB4AF81CD108EA85D7967F09150FD0B313A70CBC3D0F2717DF18D18BC44C06A831323BA25A61AD5BF1042883A6C1EF9F3815B23F8A8F94508211E9BE062C2C78B4746104208D109BC4C6EF0878F420821841042082184104208218410E22E702DA75F427EE557AD85104224C201176E97BF704F0821441641FF6FBA9C4D0821CE0697631F73D54688C2D34F28FFC18F23841043E39A7C4C1CB48A58A8A1FC473E8E10420CCDEC6DBAD57925EA7F28FF918F238410CCCBCB0BDF85FBFEFE7EF18BC4E19C3FE02A8C0AFD0FE54F7F9CA7A7278F4CC165DEFEE576503945CE2B0E8457917E35567E5FDC2D552F877E08EFF5AFFCCA92E59832B7BF11722F7E6DE92C66F358B75F0AF8DE72BA9BB4DD19BC6639B7F0E3C70F0E61C35CB92FE12A8C0364A142FF43F9D31F87BB28425C6DFF723BB8F3B6AEB77BFAE306B7420DB7D7B6E0D27880BF59F9D5B41A7F3CDD72B392ECE818DB135F7996594ED7D587D17F13FF9569F7CAFACF21D2AACB59A1FFA1FCE98F7398FEE3BFD7F5769788A1431D2116247F89174CEC01318D7A00B8955F3987294F45E7073BC4BFB4A76D84ADB52B97F34B78FD68A545647393209382A2D0EDC3513A048AC0B28ECB3CFB65A7FF07FA5F67227AFD0F7DF876365C08A207FA8C8F65F8FAAF9CDBC774C083D4FE12B65CD65A090E284B395D0DD8F0B00263756319E1F16F57B54297E2B30F04DB9CD79FAA4E6444FD3F0C8CE2DC51E031794D072C7DAF7FFBD77EB66FEC871177C9FD29F82D42F4ABF0D16A123FFB1FF3AFFC8F676B9B15B5BFC05883DC6A8E2560B66ADFACE407B9ACBA62521EF4D85E6E6F7960A4FF2B98095A314ED75DAC239A2B30B7E09FDFA2FFEDAF56B2E0E57C56696F352B2F0E62DEA63F84FE73158D1590852BBFE5ECD25D0EE9FF0AE84BE9FA6F66D5DB07709EFB47FB7E08FD7F7E7E867F3BC46FF2BAEAB1FF03FC5F6E9F770AF601E3B668DB9D15BEDD161F42FFA7EEBDB3B390FEDF85F47F8522FD67BCFE2F7E2039D00E31D3E4701634A8FAACFFDFB5B1F5FF7346ACFC596DC127432AECFF75855F5FFD5D6A4640E5576C9194824E25595B47FABF0284AE2E0B17A27E9BF64860F99B78E2E7970FFCE79F3F7FE2E7F690CFCAAF18DE27850A65C963A9FFFF61F41F73FA405D74DDFE97CA017FC58637AADC0531E2FE631107E83F2ABF2E8B74BCCCEE3CC1E11FF712BBDDE59B9EEDAB3710B7955F39E1F064855B0C534FBA71FB30FA3F7D3E0E3A846752FABF9176653D502B1F86D7495DFADE0A036DB1617C6128F147FCD67A914D01B0E1C34BBE2BBF9A3E1BE7A51B22458BDFC7F0FF83118F8362722F1DBC436363905B56FA0FFC7CA6550EBFFF651FB316477CFE13EF7F8D72FE735DFF27F2DBEC8E28C19E9F6AB773C5FBBF6C330F7AFE2750BD639E0E37C1409BD7C723FF7FCBCA0A3D65721CFAFC67D07F5C6184FED37E732FE893A3F89C5B463FFF1F18F13828BB10790AB067B9F8103B12DEE23FBB2C5781CF6742CA120F670E7DFE13F23EEBFF773ADF9BE3C53B46AE2565DF8F627FF2230CF7FEEF2C3C6D5D7C89EAACDFFF33D671A63AB8A35A75F9A47976A1AE02CC9EBA2C5C0D2EAEF9017803F8FC4FD084D94B8136B2BE8537CA727ED0FB7FD62B1F423144B8D895FB3FC73A715D071FF10243CCEF0700E3B6CE4E2BBAFF6DF64E1ECCF5EDA6E4BEC441EBA8C11EEE3E41E32DE02FF3BA2C23DEFFB945FF4B47443AEDFDFF361064FF035F93F2415FE9BF83356F5D8578FA156E0DA8BD9B3A7C50BF3F71BCFF6BDD66C994C2A540FBB23085B19479E7D17AE9703D73B8FBFF1F4FFF85D807CE470D1AFF05AE66E88F96BD4208F14D60FFE7289BA742082184E6AF7351FD0B214E41FEAB7351FD0B214E019B2F61FFFAF41DD26F82EA5F08710AA5E757C597A8FE85104208218410420821C465E157D88EDCAD18F1663F21EE82AFD57A7D7D553F175743FA2F4411EDFD003A13B8825F82A1CBD58F44FA2F4411B3F7C38C722767806F062BCAA242FFBDC01E332831D98741FA2F44353F7EFCC099F0118347F0CDE723EABF165F4B48FF8538001E68C3DDCCC921BAEAFC3315FAEF7182C69D79AB91FE0B710C58020C742DBF83A15AFA365391FF9F4330E4A65CCDD2FDD289421DCC12DC55EEBD34ABB939593F0891A5FFD5F397DF49CE373B794C84DC983E5C3F66A5588EB9E987B005388B028F6ECA14CC5DB43F35862F7F0E89AFFCEA4BB81386CEC3BF6AE392EF837B514A4C8D2FEF9FCFB2AC8A9A3550B7FF7B4CF9D33958FF39DA26E85FABCEC627C28D199DBDB45AFF974696696956589CD9564E5C132DF5226E97FEEC5E5E5E38F1DC5DCED085B8B421C0D6BDDD95C34E61CEE510DE59B67A6885943945FABF9163CA9F0EDA17EDE81F8BF47F891E5B3498671EBC3BB1971EA3FF5E6C1BB321385A4A163C1522AC70A2FE87C87A6DFDA7641772C9757104CB64F6A215E7DE3D3E967A280F5751D62CCFAD7C4BF2458780A46F0D5985471629A92D21FD0F1CAFFF309FB8BBF6D8723C3CB9D8BC16BEB2FEB7E12FF98952B280DA14DD198ED272FAC15CEFD47FA8E89F0F729573A2FDC756227CDEE9395DC3AE9E970F2A7A14D2C4B3A4EC021FB37F97DBE19790FE070ED67FB3B2F8573CE876A70F710B0333CBF970F0FEB565C7866E4A9AA8A28A9EBF523FFC209DFA0F6BE1F503FF39EBB81D3C3C367F61F2C56FFDA37D8FEEBAE35978FAE0E0CE29E59F688AB134D1DC61B8F527DEDF8EB3B029989E387380FE8F7504F460FD0FC92E49F75D2C4D229CEF10FA6F1356F09C6475D4B3F43F5137D0CA6C3F671DB783E65BFD20712F30A6066E9D1DAE75F60281C4F50B56BBA63FBCBEC8DAE5E7E0238927074287AFB6AFEAF49FBB7A5116155C44FF6F1DF3FE529D0FA4FF2632ECAD72CC90CBD287D1F59F97724F1FE0638A8B03956F05C6E3F8B3606AB0B6601B7B472E611F21EBCCCFF47987DACAC9F593D863514B89CB16F64C1E7048BBF4FE072B3FAA28318BB0A0B0F6B56F9091CDCB3D2A7111FDEF31E496EABC42FF2B1677EDE1251B5FB9EFEF8CAEFF7CB2D7BF8139DAAF45AC967E1AD9D71A5E579EB5F74F96D91D36306FA4DE52F762DAFD1DD44F622E7CD75CD64008F67FF56B6B75FA1F46716216B7BF6E49967DA6473C0FD6FFD06D72FDFFB7CF8B085E0567E97FE2994CC04E72AB9FDC63F9CED0FACF9E13E8030FB7CE16E17EE2DF403CA7BFC301F30EFEF2DE130BB3279F53FCF33C7F614D917BF21670B2895A2DFFFF0AC16C706C22B08CACB97D46D89DF8F1E77F9051D6FB2F9C0E2ADF72E17ACBD2FFDBC71460A57DFE2045AB9132774B4B39F17CFBD0FA0F7108764E962DDA560E6604786CA07590F1BBA49B170EBF3EC0C7FEF71F3935EE90EDA048819B23D1164269B3129C65C4F33FFE66A527EEB21FAABDA77D4F39FF6F4F1126B5C4F3FFB364E97F38829E6259B165E867AA914BBF38F8AE65B85C25F7E476B5FE2FE9FCD2BC702F282126DCB647A17FB68B85BB1E01454DBC3166E93411F7AB9EF4DB33FF4836D1B99452D42F1951FF4B3958FFC3169853F4FE6FFAFD0F7EF28167AE942530BB5503FD1D351C4B60B2DC02A5FACF2D1B664336AA773744D839C5F7EC6865956B370BBE847518FF85F3EDF10271FD84056396AF66A9FF38BB935DCA252BC159A4FF8123F5DFC7917DE4CDBB8AFB7F902C1A2545FF314ECDF274C5CEAA255395B0B9E3EF02A7F897AC90B3F3CB10FA8F369D3535FB4FA42C2D22D8231DD61D7CD2F2CBF459E783ECCCCE0BF7327BB9044879D1A0ED39CCEE649772C94A7016E97FE000FD17A70353709463C9E2BBD13F156E41F77F06A4FFDF043ED328C4D5D0FDFFA720FDFF265883BA4FE9EC82083183E27F9D82F45F08710514FFF778A4FF42886F42E9FD0F2322FD174288EFC901F1BF8410425C10E9BF104208218410420821841042082184104208218410428871E1374FF13AE7AF5FBF0E88487B71BC36D203920A21C4E93C3D3DCDC654E589E0EC329E0957852E8F12423C127CFFBF87F5349BDF960308F170CB08313F2E6136AC084E2D8410A700916FAF9DE7586FA597D25F1C0EE29318935A0821CE05CE9F59573F2E25FECEAFC3AFC477134288718171FBFEFECEF17FA78FA04E981DBEB3EE49FFC5C5E198C2B666B79FDD9CB3E5EA8A75B73D71F603CF061AEE278400E6A748818B8D94F14D4A463F7FFEE45334FE0829E74638D9FED4024BF191999EA7288D8FBC9E7E0A27A6CFF5B33BB4CA89E547BF0DA708EE6AF7EAFE03C2F8B59F8770F72D5D61678F93A26F9C7E8852848C3A1F01F1790359874F66D3CFED3C1C883CD09F78A9FE4F4DF0A940E7FEAFF47F5FFAFC7D4F1348FFB7B0347EAF7FF8814B6E3FDB58E6889CFD95B334BF303DE722789F3190A2FF963EA76979B56D9DD8796C09F3F69794C4A762FD0FEDFBF699FEC95DFABF2F7D0EAADB33BEA4FF5FB262BCDD2E3F052C9593CF7527EA3F040147073BFB151B9FBCC87D7E7E4EE9AEB3E98773EF3DF5C38B8B76916E4FD17F68B054FF7FFCF8B154F814A4FF3BD2873BF7D67DF84AFABFCED2F8657DBBF2DB7F2864D07F38FF3BF58DEBDFBAE56CD63D867AB57303E99B1DC5DF67D50FD2B709A5BBB05F64515445F6F861099618CE55FABF3D7DEB42361D73CFEC7FE94CFABF0E4FB5E157F83EE8DEA5E079CACAE9AFF04C9FEB2D4BFF97DAB747FAA03C45AF9A2EA59F553F5847D80FFF2ED0F908D5FACF5D88B1AA0B87827620FDDF9EBED7397E4EF13C48FFD7C1F86DF5E700D32E8575FF554FE54CDBDAF7D6A14B48A148FF97D2CFD2FFF59AEFAC1CA7FAFC0F1237CBD3AAC24C88C44959FABF3D7D262C5753D297FEB7208515FDAF1877B9D898352BAEDDF9EDAC9CA9DEFE5F997F53584A3FDDFE5FA1F3114AFB218C87B0F9821C3BF72FC2F931FE95F43FA4CF0BB1ACED982BE87F98CB76EB7F45FF7900FB7F161EC259FA1FFA24BE1FC2FF1FD2CFF2FFC37F183A093A677FE729ADA2D9C19B353986A4824343FA1FD2B731CBC71552B61D8F2CFFCA1114B62276EB7F45FF19DDFFEF58CF09AE5AB625B2CE8F713D679DFF611DE6F9C53A7FBFF3795A788926EC78669DFFE17466EDEA7D3C8CFDCF5D259CFB4D497F74FDF7F4734F9E1CECBFC23B53E1A51B361197E685BBD20F47F876977FF4F33F8E0F25FBD78F6DF38E40A75FA5F54F5AB5072F53A7442CB9505296C0E1FCFF2C9D262E97DFCA6CA32CF17069F0E979FB26DE453CEBFFE74DED5CFD77C28ED5A0EF37D5A59F283EC7EF5F58775D1AD1E1FB2D4BE3EAFE330D7EFE7FFA6C42B76DD169452FF92741FFE468255C7A05AC336567F6FD5F7E964EFD5F297F67E5B03833B97B255F9E1FE859FF72FFB18EDA565467177D48FD9F3E374ACF2B0047967F76A079FBCE0E902DA3E3CBF46F19E377DCF77F1DDFFF6DDF05EE4F39F49F7FE8AEA1C4FB7FA60FAD0BCB96C4FB37DA6B8B96FC36BBE1F25B6FB7E6E84FD6AF456ABB65FA5E79B8FC2431BBA0FF36D6C25D5589F6C923E9FF445340CF147958F9BD93B03E98796FBDD7D78FDE93310BF849F5CEF453FA0F0851F0525E7E7F00AAFBCF59E4DEFF53CA40E7D05A1EB5FF6431FAFC251E9B47ED3F03E93F1735CBDA398C03FA8F656129D7596BA5E94BFFBF1BF0860D115CF551FBCF40FA1FF6777C3930C4E5B4537DFFE1FDFD8A3AA94E5FFAFFAD80DB7994770A1EB5FF0CA4FF13DD620146D9991A5DDF94BEC8825FEE186521FFA8FD672CFD0FDB67BEB37676A1367140FFF105915F9E365CFAD2FF6F42D60B534208218410420821841042082184104208218410420821841042082184104208218410428871E14B27FAC3C108211269E35B0D7439401B9FE8FA57A930B755CE2E5D021CC875A04B8784F82648FF4FE46D95B34BD74B08BBA67036425C0DE8FF7FFFFDF7EF070349A84746E080D70315FEE1E1708AA35C172FC4B722C4371C1484A893FEB7A072AA9BD82A3F44014EC977A5FC1C4577DF8DC44F4F4FBF7EFDE210877EB9714547AA6E08AB8DD7D757BEA5D93E262EBB381689E19155B3E06ED33625DF5EBB3DF40042B5DE167C8FEC40E88932EFB02F252BA6F36D033D1E9B83F51FED987B7FB8F47F8563F49FC75A4BCFE05A2ABFE90FB46E7738929532A75F715FDA10EDB40BB262B5F056BE611F53927538E536381116F8CEF664577A08F71FFBA1F701A4FF1B40856F0CBFBE11E9FF0A07E8FF8AF880DDB92F951FDFF71C2BAA1B592D750DF165FDA74C0141841343C8857302B7CF8B8BB0EEB8DDA31EBC420C4E485EF4A5C851BAFEB7D592DE4B8FD4FFBAE083D2FF15AAF59FAD149362FBE883D7FEB59F790B785F479D2D3F07A5EDD95CB87D68A3A58019C4BA10BB5076A7DC52D4105C15F62C9032FB21710BC6EA074D8CFAC93AD08595055266B7157403BFBD6BE9C17602A61596D67ECF8F93AEFFD367C75785B81DA9FF7011E4AE1C27E9FF2AD5FACF0ADFD63F74E3B67795DD969FD3EC1CBCB31D8667B49EC403450DC1766CF0C9B3E5DC992924DAD2491FC898A766FDC3FCA5FF70D77286FD3CE82D58CBA4787E9C0AFD9F6A8A0A0ED37FEE8AB93B4793F47F9552FDE73EBF24C5BC35B0A381DAF2432E8AA2D8B3A256249BDB10EB0A9FF52C90D0970F721509258459CE2D0B0164A3FDAEF479896489F04646A26214E97FA2B5D37298FEC3A6AAC848FABF022B006B458A739B4DE5A5A326EC83DD91E96CF98B9ADB12E4ECB2764E9D71F59F85F7C7072CA71D658F894FA4F6F022FA479F1176E78B7AE05D8C5C4704F7F3DCFD4D1E65B947A90FD37F547BC57B4045FA8FF566BB6041B74C3F2592CE8A7E9AFDD6D951B9672E553EDB45B9FA9FD86983F25774A771F51F0301663986737FFF67CF12E7E542015175D3174BBF7BA59BE7ACF02C59F0CC922EA729A71D5A8ED17FE452E1C29ACAF41F7DA6ED6C2B53C3D558D1CFDBE74DB11D9CABFF59A3B83DBC6AD592BEB81857FFDB8D57DEB1DD9DAC13241D82EF330B069ADBBDC877C7D22C9C5FCD3544D9F8AF483FE5B473CB31FA5F74EC1FD4F97F3CE5D0C90732FEA785FD5356BC9EA73852FF517E7F692BA5FC537378D28F30F524B8C4A0FACFCA06CB93CDE94EA1433ABE140D0E9FE00EDABD0530358644AE738F4F4170F913E167CFEAA2C7E83F2AA7C83F5FA7FFA81FAE704C0AD737FEA765D94931278EF4FF2F9DFFDFAD6CA16C75CAEF0CAAFF301582A041997B362567F59C35BFCDFACBFE360B6F01832C5F3A8F823A5FFD54701CF400FDAF3BF60F4AF77F3D71147E7646B832A5FAB9E5FC4F67A75D2A7FCA29CD2FAF08486450FDC77F0F5E505E82ED4B799ADB59E02FD1C4BCC4DBB1F5108E80B2F32AC58443E2DE04ECABEF4F3C80C74F91D303F41FB5512798A5FA8F2A727B63D6237465966427AB23F1CAB795D08AF3FF0E4BF7EEC223F15C6FC07A5E03E9FFACF3C7497101CD8AF9BA2F7D76CA58A77D052C28760FED69D24E87E73AB9C741ABF5BFF4D83FA83EFFE92E62EB6FC319FFD382ECB04DDED98BC2FBBFB6E64543DBB0AD78FFD7DF2C46B23DF3170F5EACD6AD95EDFBBAB7D407D2FFF5572DA0DEFB664F160756F8F6C207960E9E1DB648CAACFB91BFECD9BF587AC36EF6A5E32CB6385D3752ADFF185FE96F2E30D5FA1FDE40AF736455B07E7E26A5D2B6DCFFB3DBC0FEB2FC29F79FCCD2E9BF3DE0FEAEA952FF59DC66CF5BF203EE50B995C5059FA50CC3EDDE75C7D26D1E295E9A25DF26F7ABDDE713D63B270ADF33BF54DFFF5F7AECFFC8FBFFB9438E15CA645D3FB39EE580FB3F67E93F82D57A1B40A7536874FDE73DD3D9CD119E2076CC9510CF56815957DB2686A47FD9FA2BEF9E6FD9BA5A8767A2B6F257EEE5D8C816FD6F9FAB338B44CF0636F78BBCE547C6FF3A6017BB8859FD34654BBFE5BEBDFF3F259703CAEF25E70D91949BF347D7FF2DF76CE06F76CC952B2788D6FD334B4792025F5EF296753261F6BFB3B4EEF3AE8CAEFFD5C7FE0F8EFFE8DD55574C082184104208218410420821841042082184104208218410420821841042082184104208218410DF8ADBC7CD39AFAFAFBA73400821BE157CB3CD58774E0A2184E881F57F9468B3E2CA3C3F3FFFFEFD3BDCA8691FED4B8FBE2D84B80E7C43697A3461F17DF8E79F7F3884C12C03053513E29B80E1591A424B3C307C9BFAFBFBBB47F971CCECB78FD6B56C8179AFFEF355FF4B8B530E11B22F9CCA52FC174BEDD7AF5F898B62AB25AF07ACB82D6B0E67B98F95F805294EDD95F83829137A51D8CA16EB8A56FF21F297656A4F311B7D6623EBE5EF7FBAEAFAC1282B4A7FA5FC1C0068F7EC531D7F7036BE3CC775E5F18B9001DB2B733D7E3DC700EA6CA3A2F82908F16082B69ED4BD42C7DD6349CA78EAD9B7805DEF3FF650FD2A6A0FBE12C2B25345D7CB6F12D7E9797B0CFDAF5389D1F5FFACF46D50B02DD49F7E7ACB86F4B9B7B315C1B293AEFFAD2F7DDF53ACC74FEC09A0E355612DD863442D81122E9907FC5CFBB2F8B2FFDCF6C6D703EBF18B4BF5DFE999C21E40FFB7C48F96FE1F9C3EF7AB9EAD87E3F53FD8E4EC76C8D5FF3674ECBE36DAD2FFF7A58C107828BCD53687CFF3EFEDCF7C9AB8D71CFD52DEF1DBFEF523D7803531F7ABD9E8E41BE1A522AF266C4EB1AAB0DF76AE2F66CBEFBE8E945130BAFE70143FAF7FCCE69DF1191DE9FF8EF439746667BE87951F12C723DA418FCAD57FAC8F7AEA2AF47FFBE8A5B57FED67CE62873987AAF034B95941BBF4D8AE782BC1D377A71958599FF6543BE0456EC51269A37FF5DBEA0FF7F050FF3C34A4FF47A6CF8D92B5FF7598FEC3F903F5C3FA2551FF7996E97946AEEAB693F35A668717CE0B86FFE879B995E59BBFC8DD2A0D4B83BB0E1BB793604B8AFFB0AD5BAEFF7D89F3845814A57AA3FEDC1AF54B49BF9FD2F439FE785BFFD2FF53D2E76557BF0BF160FD87609AA04D7F25022EA02CFDE77EEB3E937DCFC8E96C71A1DF3B0ABCF05E2AE4C5DE1218F0FE258CEAED1E3FEE2D4BF448EB52FF49391ACD0A53F406C47AFFE72540E7FEF888FAB35EFFD2FF23D3F71EC88AB4EFC0DE52FAC7E83FCC72173488A71B5759FACF1E7B3F48B9EF19B9876F394273EF743CABFF219150725F3D6D77D7F30A851F814DEB94F37B4BF4F4D214855967BDFFF370DB676BADD44FCA13ADA4DF6F1CCED63F7FD9FF2C5FF69F95D6B92BFD07D0FF408A3BF460FD87327BE1837D9BA2FFEDB1D81DC93A5BF4A7472230FD4D9BF59FA78C8DC0E1C6B306EC735F88ED66A57FFEF9F3A7F3A548E97F4FFAD2FFE971F5BFE74CC56CFA07E83FDC17AC39FC4D8AFEF38EA1FBC92FABFF98AABC9C5EF220C8A1E43BF49F9F025FA2963A257A7DFC766EDA4AFF7BD297FE4F0FA4FF6639276EFBB6E95797FFF9F91972C79317BB807AF4DF9D1BEC8DEFD9560EFF71A587F748042644FF8FC8CEDADAAACB3D57BE6242C9FD0FEEF2D8F3511CF7E2B2F3A7E2FC40D8B9DE9D382FE54EF1FFF738F7B6A4DFCF61FEFFA2FB6DE4FFDF9E3E4B4D567687951F5216B4945D403DFACF7EFE5BF76B05E13FDE6AFCFF283F4EE02C6DD77AC991D7BDC735514B3E712097FE465FEA3F29A63B6F5E9C72FEA767737F4BFAFD94A6CFF5DFE9275C42FA7F57FA7CAC31C5057458F9A15DED694374B04EFDE7D78A79B4EED6FF2DE77F3ADF82C110C384E517DDF0B87BFBB8E866A29785EFCD25543E8CF3FECB194AF57FFAFCAAF8C1E7FF7966DFAD7EA3EB0FD77FC5142CFDBF377DF698D58DDF2C903E34ADED45F8157ED8A1FF5C2D6166DCADFFD3EAFB2F53F7F97F073A6353C092545A46583DED5B8973E574169899ED3F2B73F1BDB008F3FBBFEE2DF4D722D2CBCFAE4867B7F76974FD09EF24DA0845553C3D3D597358BE3D2E44E9FF8EF42105FD2F451E56FE95A1C4D6E9BD8569D36F65AD47FFC3FBBF7CE1A415BBF3FD5FC02AF7F671A722AE000DCB81DD3658EB594A31E7BEDCBFEBF71BACBFC2D0F9145BF61F53DE8F68C9BDFFA7256B44B72FEC273E88F47F47FAA6F929FB6B4BE92712FAE792CD195E53EDD1FF951755F63DE396FB7FFADFC5E0FD91593AEFD26C2F97A83E7F72CBBBB4615D824ACB5F773E6A14FD9F3E36E2575E242F7A7FFCCBDFF6A7DFCF59E9675D0174B0FE2F9952C1C6DBADFFB3FFB153FFA7AFEEFF4C0CFD609A6C5AC70F65F3BBA59F72177DB8BCBD3FC169417F70397F4A168ECD237CFF76E9FDFF5EE729E57F0CFD77AC422C4D9E08ECA375D7EF7CFFFF89E9B36B62F75EF0C1FABFE4470DD6E96EFD9F55837EFD9FCAEEFF17420821841042082184104208218410420821841042082184104208218410420821841042082184104208218410425C81101C560821C4F7C1AF5A4D89D324841062203878EED96511857828436F6BFB2125B2F36C2EB8BC3A25C1A59BE7999EFBB19F9F9F7FFFFEDD8678B0FAE9BCF67F0564D4BFEE6EA339982D9715CD81797979E1C8089645E2B5E43BA2F2DD8547B8432EB955C4D10AFCC2F6DDA13C5BAC13FAB02DAA190CD8C40823E25E3C368D357445FC7174A14056E42C6638FD5F4FB9C8284AD4FF95E02C59DD89034307B2C2B573B7498F76B112F32E455497524EB11FB86672A31D391C15253D71B105EBF0B91D32B0D2FFB342748174FD5F890998A2185F269E68CBB59996EAFF2DC9AFBB1E3334658AC446E42D6F4E71429CBBB70FD81CEACFEEF661F687B0655EF9FD5340B5FEDBE48EF44F89337571BFD301C52BD57F9EDFD1D5391466EE03A6EBFF44FAD31F01B9C52ADC6A208C538E05DC93A9A5FC364750A41E5F9C35A5D5398F5C7B168E25DA291AF6DFDBFE93181C1C709F4CF4BC2DE93C6797959763CD91E8CEB2AA2EF5FF9C8535312AEAECB2ACE1F3B815B5CE1B3C55FA7FD0CF8329882E9AEBF7ABD0FFE9F31450DA10804DC4DD89706DAC5031B4B32408351FD2E17921A5452A96002BC62D1B5DE976EFE946F595F128B7DCFFCF2ED11A5CCE1143F142C7C2F885159A7BF4AB48FF2712A28A6D8B16B6D2772772A2FE67B52F0A195C5515FAB964ABF480428675505D4775F02CB9EEACA1B1E570F025DAC74EFFC396F175B5321FC9D2F82DEAFFA5C38AA780D289988DDB1E71369BD6EDF0E024596A944430EF773ACD50D4E0A4B221805F65B5052F01B26A06AE3C6B080C5BF6EFA51C84B344D8D0B20A41FDA46FB10D07BB7AD016362DA65871ABC29F264456542B70788444A750FA506A537E00FD9F3EEF4526CEC2D6BEEE990F737DBF470E3AC03A93AE725CC8E0FFEFF1EFB1911FE65CAEA8AEA27F06254F5C027051ED671EC529C6F9ECFE384F31FD598C4B70F5A41BCFFF6E2031BB763990D285603CA49F3659929A41F57FFA3CDCB21C412C7490CDAC8E0A4D837E2E35CA0EACC3AC1F91EAB428426ABE619DDEFF013744A25004FBD31F2465AC057D0B878B9C6376ACAE496257BC0E412EFA13846C5A2FCD9D0296A4665CFD9F680AC85A5CB7FAEFEBBB94C4A7BFBBB128ED52A3EC80FD302DFDE92329366841D189ACDCC69D680ACEAD9C89EA87AB224CCA3DBA677387F7F6A2F33FD5E9BFBCBC84D3B6B9B3C0C1F67FD8BCB647CB3A94CB5D34F1E5DCA5DE9E2BD468D363F4BFC84A746CF0627EC9326E710AD75B365182B82A2ADECFC5E0B57AB604D14BEDFBA2CD0B7EA2145B88172C567E1EBF9DEDBBD20F79BAECB1FFABCFFF57A7EF58E5F02CE087AE5352BE6D2025233FCB8D34ED71D29587DB224B79BE3CFFD36F657957F7021FA3FF53D9F955873722B3CC15F60221F15CFDAFF0339C728E059DB3DF28E5F75F306079D1D433C5AC1C82CA1A088FA1FF4E9805528CE7DB063AB3084B980AE507DC33539CDB4B1B6AD0CFCE71CD479DCDFEACD8F6B211DA5678F58D31788A742F105B11FD89571F3567893BE0D8AD93380AA06FC15585B5526713A09C41CAD0CA9D2EB2EAF7BF8E7FBF2CCC0217BF7A94FD78A5CA0F967AD43E7828CDBEFFDBBFC4B62C66B720BBCBFE7FF0AAA9F54F1475F6A5D4DDF8C91FAE07AE9F44FD6F7719725DD045FB6BFC2A41DD81D50024A2B37D79678DBF478FED7C229493CF4771FFA936AA07856781B3CBB246B5F29B79603D042B779688AC9E337BF99B9335E9C38A48D7FF95C2A788DE97AF68E51ABD61173557FF8BDA176F3100FB88B3B23D29B713E22C3D7EAD7084D5E7FAACCDD9E9B37FA9A5627FFC91F0E3946797628DD2B7BDD88ECDEDF60CDFD6C298B4E67A8CC3C9C0A26499FEA609E7F70215E62ECF6843E8FFF431052CB5424FB21BF5BF6E8ACF7AF96B3671938EC33C66624456C4275D79F81545EB99450BF9A2D75EFCD815AFB5130F9299B8852BF42DA3BABB3E72F77FA7D5F931D7A9EBADC0EF5F743A6F8FD1FFA9E93FF6436EFC023F19052BCB17F559898B07268CA9F4C81A420821841042082184104208218410420821841042082184104208218410420821841042082184104208712EB8C23431A6A4E3770A59E2DF39C8AF10425C165C91977EB316AEB03B2C7ECA40208EDE6161238410824108A42289C6E4724070A8E1F065D7C5837C09710C1E7FE4EC527C2F70ED734A34F916848049772E3D009A1C1F1B5BE21D1C3F341DD887EEC245509E0A8F6E9DFEC3C5BD943E824DBCBFBFDFAB846DFC05CB0557DC734480AB0D73C4472E1567DCFCAF802F0104DF797D7D3DBB2C7B28D5370CC9FE20B667C1C195068D79018970ED824737C55CB4C4AD8AACF370D82F8F3F926E8EA22DDA9459A2EF7DBA952845A67BFC5C5713FF890212950E3154514A40B14782E3639E5D963D94EA1BA4665CFFD803E8FFF4378422066FE2585E524E27DDA870350EB62E1638360B400F37C65DFD323EF295C57F3ACAFF50BDC5302E30AE6E059BEF0750AD6F309FAE397CBEE401FC3FD35F95C023B8B59CF24441EDFF7CC05FE6DAA530B7F8C485AD357800A2CB6D4930442B864F2C84AEBEECEA1E252CF5CCB0CAD5E5520DCCD11185BA086BD9527DC3FC32B47E0E8AA9D9BF1FC03D32FBD1D83D22ACF39854427CE0FF8726A72B86CF657C221D3670F8B8E5A150C8B05EE871281DC961B22CFD173BC011D95BCD86A3586163FCF15BDE0166E83FFC30E98A015B142B8B9051A7FE5BFA2104BCFF70C1D32FDCBED57921A371C57338FD9F1DBFA3141E603C0EFA96C461432C9D53F4DF74122D9E229B667843906D5961560426171F0BF82DCAB07DA4F03AE5E7CF9F26FE107CFBC1B286EBFB763D1FA6F4FF2EA4FFA7801174410B6A0BE3EA3FE38F803D5F57B9C4E31C2ECBC1F96F1F3BFDD2ED10B05E84B3A06EB407C1BFCBFFCF82BF5472FCC1C63DE5C338D22D8F8C2A361A4C22581CAC9EB3A65A4B074E4E3E8E882FAF36A7338FA1FF138DA0110BFF18FAEF2209050B1F3B993D426959F46B05B4DD2617D8F92F1FF8CF367EF1B3FD014AB27DBF095B602CFEDC51D99775B503F0C7EB7F7ACA5882F92234F7443D2F4567D1BEE4018CFB22C0914BEC0AACFC6EE7B017AEFDC8475FEE02A6388BA70966D65E8FA7E9C661B88B86AF266B6DF8BB2C0D36A491E3D5A47E96632CABD283DC683E6ECAAC1BE7A4FF5760DCF363ACFF43084260FBF9F67D02C2FE7338FFB30ADF5E3EE61F7DD982DFFAE48592D86FEF7D16AC2CF8FC6ABFF3EA001EE3FC3F8EF5A2212AA6B3E1FCFF8FC4A02F02B0FE17759B502DFE31EB5D8C6AFDC77FF7D57AEEFD0F4BFA7FFB6B4540F37B6C457E85D372B4A4A04229FEB1D26E8FF63DE6FDDFA2231C56ED6CA85BB34AFF1F0C76D29E5D963B384CFF31B2EA065A100A9F913B7583F7464D39A1FF66399BE275EE2FAFDBFF139D2EEE997420A16DB2B78C455FA97262655DFA8A3D5A39F708F796F36989834EFA7F2283BE08C0C7FF2ABA0DC6AFEB43F8984BD8F375E3B9733AE6BDD1593AF5D31309FE7FDE19847AEF6E1DA480232889937E69833AB09CABEFFFAC70FE7057C1E51EFC65625ED2FF73C16A7DA05BA4D87F52BA26753B7C56E2B28056FB473C5A67B2BC05D0D2B9BE802B86CFFF045F4A67E82B567BBFF933517F42FB5650AACF53657099E963116A35E333977724AF28FBC66F644DCC0BAFC30F647F3E12E8A8035D07C7FA5F61C205174769B825AC657C20A339FAC775B83FF9F6B1ACB0E1DCEFF466E73C520E7F83E7DABD69B27405687FF98F899F55B704A89E5C98704B95783CE048BCE66D2A2DD5FA8F6D11EFF6E1632EE1226878E412EFFDABB8FF9FDFFF5DB2A27129D0EE5CAC4E2AB6204B1B143C46FC5FCF6BACFD41711770415CF64245D183E27F89DD60F23DBB2042082184104208218410420821841042082184104208210AF91F8E316CFE]]>
          </BitmapFile>
        </BitmapFromFile>
      </Producers>
    </Bitmap>
    <Material Name="FontMaterial" Shading="1" Light="0" Blend="2" Font="Font"/>
    <Model Name="MyModel"/>
  </Content>
</ZApplication>
User avatar
VilleK
Site Admin
Posts: 2274
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Re: How to retrieve what kind of model

Post by VilleK »

Indeed the "Name" property won't work in release builds. All names are removed from the final executable to minimize binary size. We can change this, but it seemed like the best choice at the time.

It is better to find some other way to distinguish models such as using different categories or a variable in model defined.
User avatar
Ats
Posts: 603
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Re: How to retrieve what kind of model

Post by Ats »

Oh all right. I understand why you are doing that, but having it working in preview and not in release is a bit confusing :?

I can manage with categories, even if enemies and obstacles have the same number for rendering and for cleaning all the models. I'll change that.
For example, I'll have to cycle through several categories instead of one to teleport everything to coordinate 0 :

Code: Select all

  // Retrieve all models from category 10 Objects
  getModels(models, 10);
  for(int i=0; i<models.SizeDim1; i++)
  {
    model m = models[i];
    m.Position.Z += d;
  }

On the other hand, I can't simply use a variable, since they would have different names per Model. Such as "Enemy.Enemy_sound" and "Obstacle.Obstacle_sound". And I can't know if the model is an Enemy or an Obstacle for finding out the variable that goes with it.

Or... Could using "Name" in release mode be an option of the ZApplication? Or in the Project menu, such as "Remove unused code" and "Enable function inlining"?
User avatar
Kjell
Posts: 1876
Joined: Sat Feb 23, 2008 11:15 pm

Re: How to retrieve what kind of model

Post by Kjell »

Hi Ats,
Ats wrote: Mon Jan 02, 2023 10:14 amI understand why you are doing that, but having it working in preview and not in release is a bit confusing :?
There are quite a few functions that are only available from the IDE ( or Visualizer ) and not in a standalone. Personally i think this is totally fine and isn't too difficult to learn / comprehend.
Ats wrote: Mon Jan 02, 2023 10:14 amOn the other hand, I can't simply use a variable, since they would have different names per Model. Such as "Enemy.Enemy_sound" and "Obstacle.Obstacle_sound".
If you're not using a base model to which you can add a Sound_ID variable this isn't very straight-forward no. Another possibility ( albeit a little less elegant ) is to use the CollisionBounds/Offset properties to store a bunch of values, since you're not using those anyway, right?

K
User avatar
Ats
Posts: 603
Joined: Fri Sep 28, 2012 10:05 am
Contact:

Re: How to retrieve what kind of model

Post by Ats »

You are right, I can totally use CollisionBounds and ColissionOffest to do that. Thanks for the good suggestion :wink:

Edit:
Using CollisionBounds.X with 1 to number of different sounds I want to make is nice, simple and working like a charm. Thanks :wink:
Post Reply