{"id":313,"date":"2017-09-29T19:27:35","date_gmt":"2017-09-29T19:27:35","guid":{"rendered":"https:\/\/castle-engine.sourceforge.io\/wp\/?p=313"},"modified":"2017-09-29T19:38:28","modified_gmt":"2017-09-29T19:38:28","slug":"lots-of-improvements-for-developers-ios-android-camera-navigationtype-t3d-visible-more","status":"publish","type":"post","link":"https:\/\/castle-engine.io\/wp\/2017\/09\/29\/lots-of-improvements-for-developers-ios-android-camera-navigationtype-t3d-visible-more\/","title":{"rendered":"Lots of improvements for developers: iOS, Android, camera NavigationType, T3D.Visible, more!"},"content":{"rendered":"<table class=\"thumbnails thumbnails-align-right\"><tr><td>\n          <a href=\"https:\/\/castle-engine.io\/wp\/wp-content\/uploads\/2017\/09\/IMG_20170918_212129_1-scaled.jpg\"\n             class=\"screenshot\"\n             title=\"sdr\"><img loading=\"lazy\" decoding=\"async\"\n            style=\"float: right\"\n            src=\"https:\/\/castle-engine.io\/wp\/wp-content\/uploads\/2017\/09\/IMG_20170918_212129_1-200x267.jpg\"\n             width=\"200\" height=\"267\" \n            alt=\"sdr\"\n          ><\/a><\/td><\/tr><\/table>\n<p>Lots of new things for developers! \ud83d\ude42<\/p>\n<ol>\n<li>\n<p><b>Improvements for iOS application building<\/b>:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/castle-engine\/castle-engine\/wiki\/CastleEngineManifest.xml-examples\">Additional attributes in CastleEngineManifest.xml for iOS<\/a>: team identifier, overriding qualified name and version for iOS, specifying <code>uses_non_exempt_encryption<\/code>.<\/p>\n<li>\n<p>Loading music from OggVorbis (using Tremolo customized for iOS).<\/p>\n<li>\n<p>Compilation fixes (workarounds for some FPC problems) to work in <i>release mode<\/i>.<\/p>\n<li>\n<p>Fixed touch up (mouse up) event. Test multi-touch with our <a href=\"https:\/\/github.com\/castle-engine\/castle-engine\/tree\/master\/examples\/mobile\/drawing_toy\">drawing_toy example<\/a>.\n    <\/ul>\n<li>\n<p>Fixed <b>Android building from Windows<\/b>.<\/p>\n<li>\n<p>Large <b>camera API simplification<\/b>:<\/p>\n<p>In short: <code>TUniversalCamera<\/code> class is now gone. Change the navigation type using the new <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleSceneManager.TCastleAbstractViewport.html#NavigationType\">SceneManager.NavigationType<\/a> property.<\/p>\n<p>Details: I came to a realization that the <code>TUniversalCamera<\/code> class is a needless complication. We now expose <code>NavigationType<\/code> at <code>TCastleAbstractViewport<\/code> (ancestor of <code>TCastleSceneManager<\/code> and <code>TCastleViewport<\/code>).<\/p>\n<p>We also expose methods <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleSceneManager.TCastleAbstractViewport.html#ExamineCamera\">ExamineCamera<\/a> and <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleSceneManager.TCastleAbstractViewport.html#WalkCamera\">WalkCamera<\/a> at <code>TCastleAbstractViewport<\/code>. They create the camera instance, and can switch the navigation as requested.<\/p>\n<p>So now you can do<\/p>\n<pre>\r\nSceneManager.NavigationType := ntWalk;\r\n<\/pre>\n<p>instead of the previous (ugly):<\/p>\n<pre>\r\n(SceneManager.RequiredCamera as TUniversalCamera).NavigationType := ntWalk;\r\n<\/pre>\n<p>And instead of<\/p>\n<pre>\r\nSceneManager.Camera := SceneManager.CreateDefaultCamera;\r\n(SceneManager.Camera as TUniversalCamera).NavigationType := ntWalk;\r\n(SceneManager.Camera as TUniversalCamera).Walk.MoveSpeed := 10;\r\n<\/pre>\n<p>now you can do<\/p>\n<pre>\r\nSceneManager.WalkCamera.MoveSpeed := 10;\r\n<\/pre>\n<p>This is much simpler, right? \ud83d\ude42 It&#8217;s also safer, without these ugly typecasts.<\/p>\n<p>    <!--p>Why? TUniversalCamera was a \"leaking proxy\", some properties should be set by TUniversalCamera, some directlty thtrough TUniversalCamera.Walk etc. This prevented making easy SceneManager.WalkCamera method. And now it's possible, and everything is just much simpler.--><\/p>\n<li>\n<p>More new stuff!<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.T3D.html#Visible\">T3D.Visible<\/a> to easily toggle object visibility, regardless of it&#8217;s collisions. This is consistent with <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.T3D.html#Collides\">T3D.Collides<\/a> (that controls collisions, regardless of visibility) and <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.T3D.html#Exists\">T3D.Exists<\/a> (that controls everything).<\/p>\n<li>\n<p><a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleControls.TCastleImageControl.html#ProportionalScaling\">TCastleImageControl.ProportionalScaling<\/a> and <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleControls.html#TProportionalScaling\">TProportionalScaling<\/a><\/p>\n<li>\n<p><a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/CastleParameters.html#OptionDescription\">OptionDescription<\/a>\n    <\/ul>\n<li>\n<p>And, in case you missed our announcements from 2 weeks ago, our engine is now integrated with an amazing <i>Kraft Physics Engine<\/i> by Benjamin &#8216;BeRo&#8217; Rosseaux.<\/p>\n<p><a href=\"https:\/\/castle-engine.sourceforge.io\/manual_physics.php\">The manual page about physics in Castle Game Engine<\/a> should be helpful.<\/p>\n<p>The main API point to start reading is the <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.T3DTransform.html#RigidBody\">T3DTransform.RigidBody<\/a> property, and the things it links to: <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.TRigidBody.html\">TRigidBody<\/a>, <a href=\"https:\/\/michalis.ii.uni.wroc.pl\/cge-www-preview\/apidoc\/html\/Castle3D.TCollider.html\">TCollider<\/a> and it&#8217;s descendants.\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Lots of new things for developers! \ud83d\ude42 Improvements for iOS application building: Additional attributes in CastleEngineManifest.xml for iOS: team identifier, overriding qualified name and version for iOS, specifying uses_non_exempt_encryption. Loading music from OggVorbis (using Tremolo customized for iOS). Compilation fixes (workarounds for some FPC problems) to work in release mode. Fixed touch up (mouse up) &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/castle-engine.io\/wp\/2017\/09\/29\/lots-of-improvements-for-developers-ios-android-camera-navigationtype-t3d-visible-more\/\" class=\"more-link\">Continue reading  \u27a4<span class=\"screen-reader-text\"> &#8220;Lots of improvements for developers: iOS, Android, camera NavigationType, T3D.Visible, more!&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":314,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/castle-engine.io\/wp\/wp-content\/uploads\/2017\/09\/IMG_20170918_212129_1-scaled.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9IgYW-53","jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/posts\/313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/comments?post=313"}],"version-history":[{"count":8,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/posts\/313\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/posts\/313\/revisions\/322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/media\/314"}],"wp:attachment":[{"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/media?parent=313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/categories?post=313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/castle-engine.io\/wp\/wp-json\/wp\/v2\/tags?post=313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}